@birdcc/lsp 0.0.1-alpha.0 → 0.1.0-beta.0

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 (107) hide show
  1. package/README.md +25 -23
  2. package/dist/asn-completion.d.ts +21 -0
  3. package/dist/asn-completion.d.ts.map +1 -0
  4. package/dist/asn-completion.js +42 -0
  5. package/dist/asn-completion.js.map +1 -0
  6. package/dist/asn-context.d.ts +9 -0
  7. package/dist/asn-context.d.ts.map +1 -0
  8. package/dist/asn-context.js +203 -0
  9. package/dist/asn-context.js.map +1 -0
  10. package/dist/asn-hover.d.ts +11 -0
  11. package/dist/asn-hover.d.ts.map +1 -0
  12. package/dist/asn-hover.js +33 -0
  13. package/dist/asn-hover.js.map +1 -0
  14. package/dist/asn-inlay-hints.d.ts +13 -0
  15. package/dist/asn-inlay-hints.d.ts.map +1 -0
  16. package/dist/asn-inlay-hints.js +47 -0
  17. package/dist/asn-inlay-hints.js.map +1 -0
  18. package/dist/diagnostic.d.ts.map +1 -1
  19. package/dist/diagnostic.js +2 -10
  20. package/dist/diagnostic.js.map +1 -1
  21. package/dist/document-symbol.js +1 -1
  22. package/dist/document-symbol.js.map +1 -1
  23. package/dist/hover-context.d.ts +31 -0
  24. package/dist/hover-context.d.ts.map +1 -0
  25. package/dist/hover-context.js +125 -0
  26. package/dist/hover-context.js.map +1 -0
  27. package/dist/hover-docs/00-base.yaml +5 -0
  28. package/dist/hover-docs/10-global-options.yaml +442 -0
  29. package/dist/hover-docs/20-filter-language.yaml +209 -0
  30. package/dist/hover-docs/30-channel-options.yaml +244 -0
  31. package/dist/hover-docs/40-protocol-common.yaml +59 -0
  32. package/dist/hover-docs/41-protocol-igp.yaml +305 -0
  33. package/dist/hover-docs/42-protocol-kernel-static.yaml +220 -0
  34. package/dist/hover-docs/43-protocol-mpls.yaml +40 -0
  35. package/dist/hover-docs/44-protocol-extended.yaml +635 -0
  36. package/dist/hover-docs/50-protocol-bgp.yaml +482 -0
  37. package/dist/hover-docs/60-protocol-ospf.yaml +527 -0
  38. package/dist/hover-docs.d.ts +5 -1
  39. package/dist/hover-docs.d.ts.map +1 -1
  40. package/dist/hover-docs.js +376 -51
  41. package/dist/hover-docs.js.map +1 -1
  42. package/dist/hover-usage/00-base.yaml +2 -0
  43. package/dist/hover-usage/10-global-usage.yaml +73 -0
  44. package/dist/hover-usage/20-filter-usage.yaml +41 -0
  45. package/dist/hover-usage/30-channel-usage.yaml +41 -0
  46. package/dist/hover-usage/40-protocol-usage.yaml +258 -0
  47. package/dist/hover-usage/50-bgp-usage.yaml +254 -0
  48. package/dist/hover-usage/60-ospf-usage.yaml +340 -0
  49. package/dist/hover.d.ts +10 -0
  50. package/dist/hover.d.ts.map +1 -1
  51. package/dist/hover.js +152 -46
  52. package/dist/hover.js.map +1 -1
  53. package/dist/index.d.ts +7 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +6 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/init/workspace-init.d.ts +28 -0
  58. package/dist/init/workspace-init.d.ts.map +1 -0
  59. package/dist/init/workspace-init.js +72 -0
  60. package/dist/init/workspace-init.js.map +1 -0
  61. package/dist/lsp-server.d.ts +7 -1
  62. package/dist/lsp-server.d.ts.map +1 -1
  63. package/dist/lsp-server.js +277 -65
  64. package/dist/lsp-server.js.map +1 -1
  65. package/dist/project-config.d.ts +22 -0
  66. package/dist/project-config.d.ts.map +1 -0
  67. package/dist/project-config.js +307 -0
  68. package/dist/project-config.js.map +1 -0
  69. package/dist/shared.d.ts +1 -0
  70. package/dist/shared.d.ts.map +1 -1
  71. package/dist/shared.js +4 -24
  72. package/dist/shared.js.map +1 -1
  73. package/dist/symbol-utils.d.ts +6 -6
  74. package/dist/symbol-utils.d.ts.map +1 -1
  75. package/dist/symbol-utils.js +24 -25
  76. package/dist/symbol-utils.js.map +1 -1
  77. package/dist/type-hint-inlay.d.ts +4 -0
  78. package/dist/type-hint-inlay.d.ts.map +1 -0
  79. package/dist/type-hint-inlay.js +27 -0
  80. package/dist/type-hint-inlay.js.map +1 -0
  81. package/dist/utils.d.ts +65 -0
  82. package/dist/utils.d.ts.map +1 -0
  83. package/dist/utils.js +97 -0
  84. package/dist/utils.js.map +1 -0
  85. package/package.json +20 -9
  86. package/.oxfmtrc.json +0 -16
  87. package/dist/hover-docs.yaml +0 -600
  88. package/scripts/copy-hover-yaml.mjs +0 -14
  89. package/src/completion.ts +0 -223
  90. package/src/definition.ts +0 -50
  91. package/src/diagnostic.ts +0 -48
  92. package/src/document-symbol.ts +0 -27
  93. package/src/hover-docs.ts +0 -223
  94. package/src/hover-docs.yaml +0 -600
  95. package/src/hover.ts +0 -122
  96. package/src/index.ts +0 -8
  97. package/src/lsp-server.ts +0 -350
  98. package/src/references.ts +0 -107
  99. package/src/server.ts +0 -4
  100. package/src/shared.ts +0 -182
  101. package/src/symbol-utils.ts +0 -126
  102. package/src/validation.ts +0 -85
  103. package/test/hover-docs.test.ts +0 -18
  104. package/test/lsp.test.ts +0 -304
  105. package/test/perf-baseline.test.ts +0 -96
  106. package/test/validation.test.ts +0 -212
  107. package/tsconfig.json +0 -8
@@ -0,0 +1,22 @@
1
+ export interface ProjectAnalysisDefaults {
2
+ maxDepth: number;
3
+ maxFiles: number;
4
+ }
5
+ export interface ProjectAnalysisOptions {
6
+ entryUri: string;
7
+ workspaceRootUri?: string;
8
+ includeSearchPathUris: string[];
9
+ maxDepth: number;
10
+ maxFiles: number;
11
+ allowIncludeOutsideWorkspace: boolean;
12
+ crossFileEnabled: boolean;
13
+ mode: "document" | "main" | "workspace";
14
+ configPath?: string;
15
+ }
16
+ export interface ResolveProjectAnalysisOptionsInput {
17
+ documentUri: string;
18
+ workspaceRootUris: readonly string[];
19
+ defaults: ProjectAnalysisDefaults;
20
+ }
21
+ export declare const resolveProjectAnalysisOptions: (input: ResolveProjectAnalysisOptionsInput) => Promise<ProjectAnalysisOptions>;
22
+ //# sourceMappingURL=project-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B,EAAE,OAAO,CAAC;IACtC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAuPD,eAAO,MAAM,6BAA6B,GACxC,OAAO,kCAAkC,KACxC,OAAO,CAAC,sBAAsB,CAgJhC,CAAC"}
@@ -0,0 +1,307 @@
1
+ import { access, readFile } from "node:fs/promises";
2
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
3
+ import { fileURLToPath, pathToFileURL } from "node:url";
4
+ import { sniffProjectEntrypoints } from "@birdcc/core";
5
+ const CONFIG_FILE_NAMES = ["bird.config.json", "birdcc.config.json"];
6
+ const DEFAULT_WORKSPACE_ENTRY_FILE = "bird.conf";
7
+ const isFileUri = (uri) => uri.startsWith("file://");
8
+ const toFilePath = (uri) => {
9
+ if (!isFileUri(uri)) {
10
+ return null;
11
+ }
12
+ return fileURLToPath(uri);
13
+ };
14
+ const toFileUri = (path) => pathToFileURL(path).toString();
15
+ const pathExists = async (path) => {
16
+ try {
17
+ await access(path);
18
+ return true;
19
+ }
20
+ catch (error) {
21
+ const ioError = error;
22
+ if (ioError.code === "ENOENT") {
23
+ return false;
24
+ }
25
+ throw error;
26
+ }
27
+ };
28
+ const findNearestConfigPath = async (documentPath) => {
29
+ let current = resolve(dirname(documentPath));
30
+ while (true) {
31
+ for (const fileName of CONFIG_FILE_NAMES) {
32
+ const candidate = join(current, fileName);
33
+ if (await pathExists(candidate)) {
34
+ return candidate;
35
+ }
36
+ }
37
+ const parent = dirname(current);
38
+ if (parent === current) {
39
+ return undefined;
40
+ }
41
+ current = parent;
42
+ }
43
+ };
44
+ const parseProjectConfig = async (configPath) => {
45
+ try {
46
+ const raw = await readFile(configPath, "utf8");
47
+ const parsed = JSON.parse(raw);
48
+ if (!parsed || typeof parsed !== "object") {
49
+ return undefined;
50
+ }
51
+ const data = parsed;
52
+ const config = {};
53
+ if (typeof data.main === "string" && data.main.trim().length > 0) {
54
+ config.main = data.main;
55
+ }
56
+ if (Array.isArray(data.workspaces)) {
57
+ config.workspaces = data.workspaces.filter((item) => typeof item === "string" && item.trim().length > 0);
58
+ }
59
+ if (Array.isArray(data.includePaths)) {
60
+ config.includePaths = data.includePaths.filter((item) => typeof item === "string" && item.trim().length > 0);
61
+ }
62
+ if (data.crossFile && typeof data.crossFile === "object") {
63
+ const crossFileRaw = data.crossFile;
64
+ config.crossFile = {
65
+ enabled: typeof crossFileRaw.enabled === "boolean"
66
+ ? crossFileRaw.enabled
67
+ : undefined,
68
+ maxDepth: typeof crossFileRaw.maxDepth === "number"
69
+ ? crossFileRaw.maxDepth
70
+ : undefined,
71
+ maxFiles: typeof crossFileRaw.maxFiles === "number"
72
+ ? crossFileRaw.maxFiles
73
+ : undefined,
74
+ externalIncludes: typeof crossFileRaw.externalIncludes === "boolean"
75
+ ? crossFileRaw.externalIncludes
76
+ : undefined,
77
+ };
78
+ }
79
+ return config;
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ };
85
+ const clampPositiveInteger = (value) => {
86
+ if (!Number.isInteger(value) || (value ?? 0) <= 0) {
87
+ return undefined;
88
+ }
89
+ return value;
90
+ };
91
+ const normalizePosixPath = (value) => value.replaceAll("\\", "/").replace(/^\.\//, "").replace(/\/+$/, "");
92
+ const globToRegExp = (glob) => {
93
+ const normalized = normalizePosixPath(glob);
94
+ if (normalized.length === 0) {
95
+ return /^$/;
96
+ }
97
+ let output = "";
98
+ for (let index = 0; index < normalized.length; index += 1) {
99
+ const char = normalized[index];
100
+ const nextChar = normalized[index + 1];
101
+ if (char === "*" && nextChar === "*") {
102
+ output += ".*";
103
+ index += 1;
104
+ continue;
105
+ }
106
+ if (char === "*") {
107
+ output += "[^/]*";
108
+ continue;
109
+ }
110
+ if (char === "?") {
111
+ output += "[^/]";
112
+ continue;
113
+ }
114
+ output += char.replace(/[.+^${}()|[\]\\]/g, "\\$&");
115
+ }
116
+ return new RegExp(`^${output}$`);
117
+ };
118
+ const matchesWorkspacePatterns = (relativeDir, patterns) => {
119
+ const candidate = normalizePosixPath(relativeDir);
120
+ let included = false;
121
+ for (const rawPattern of patterns) {
122
+ const trimmed = rawPattern.trim();
123
+ if (trimmed.length === 0) {
124
+ continue;
125
+ }
126
+ const isNegated = trimmed.startsWith("!");
127
+ const pattern = isNegated ? trimmed.slice(1) : trimmed;
128
+ if (pattern.length === 0) {
129
+ continue;
130
+ }
131
+ if (!globToRegExp(pattern).test(candidate)) {
132
+ continue;
133
+ }
134
+ included = !isNegated;
135
+ }
136
+ return included;
137
+ };
138
+ const resolveWorkspaceDirFromPatterns = (configDir, documentDir, patterns) => {
139
+ const relativeDir = normalizePosixPath(relative(configDir, documentDir));
140
+ if (relativeDir.length === 0 ||
141
+ relativeDir === "." ||
142
+ relativeDir.startsWith("..")) {
143
+ return undefined;
144
+ }
145
+ const segments = relativeDir.split("/").filter(Boolean);
146
+ let matched;
147
+ for (let index = 1; index <= segments.length; index += 1) {
148
+ const candidate = segments.slice(0, index).join("/");
149
+ if (matchesWorkspacePatterns(candidate, patterns)) {
150
+ matched = candidate;
151
+ }
152
+ }
153
+ return matched ? resolve(configDir, matched) : undefined;
154
+ };
155
+ const resolveContainingWorkspaceRootUri = (documentPath, workspaceRootUris) => {
156
+ const roots = workspaceRootUris
157
+ .map((uri) => toFilePath(uri))
158
+ .filter((path) => path !== null)
159
+ .map((path) => resolve(path));
160
+ let selectedRoot;
161
+ for (const root of roots) {
162
+ const relPath = relative(root, documentPath);
163
+ const withinRoot = relPath.length === 0 ||
164
+ (!relPath.startsWith("..") && !isAbsolute(relPath));
165
+ if (!withinRoot) {
166
+ continue;
167
+ }
168
+ if (!selectedRoot || root.length > selectedRoot.length) {
169
+ selectedRoot = root;
170
+ }
171
+ }
172
+ return selectedRoot ? toFileUri(selectedRoot) : undefined;
173
+ };
174
+ const dedupeUris = (uris) => {
175
+ const seen = new Set();
176
+ const output = [];
177
+ for (const uri of uris) {
178
+ if (seen.has(uri)) {
179
+ continue;
180
+ }
181
+ seen.add(uri);
182
+ output.push(uri);
183
+ }
184
+ return output;
185
+ };
186
+ export const resolveProjectAnalysisOptions = async (input) => {
187
+ const documentPath = toFilePath(input.documentUri);
188
+ if (!documentPath) {
189
+ return {
190
+ entryUri: input.documentUri,
191
+ workspaceRootUri: undefined,
192
+ includeSearchPathUris: [],
193
+ maxDepth: input.defaults.maxDepth,
194
+ maxFiles: input.defaults.maxFiles,
195
+ allowIncludeOutsideWorkspace: false,
196
+ crossFileEnabled: true,
197
+ mode: "document",
198
+ };
199
+ }
200
+ const documentPathResolved = resolve(documentPath);
201
+ const nearestConfigPath = await findNearestConfigPath(documentPathResolved);
202
+ if (!nearestConfigPath) {
203
+ const workspaceRootUri = resolveContainingWorkspaceRootUri(documentPathResolved, input.workspaceRootUris);
204
+ const workspaceRootPath = workspaceRootUri && isFileUri(workspaceRootUri)
205
+ ? toFilePath(workspaceRootUri)
206
+ : null;
207
+ if (workspaceRootPath) {
208
+ const resolvedWorkspaceRootUri = toFileUri(workspaceRootPath);
209
+ const detection = await sniffProjectEntrypoints(workspaceRootPath, {
210
+ maxDepth: 8,
211
+ maxFiles: 20_000,
212
+ });
213
+ if (detection.primary) {
214
+ const entryPath = resolve(workspaceRootPath, detection.primary.path);
215
+ return {
216
+ entryUri: toFileUri(entryPath),
217
+ workspaceRootUri: resolvedWorkspaceRootUri,
218
+ includeSearchPathUris: dedupeUris([
219
+ resolvedWorkspaceRootUri,
220
+ toFileUri(dirname(entryPath)),
221
+ ]),
222
+ maxDepth: input.defaults.maxDepth,
223
+ maxFiles: input.defaults.maxFiles,
224
+ allowIncludeOutsideWorkspace: false,
225
+ crossFileEnabled: true,
226
+ mode: entryPath === documentPathResolved ? "document" : "workspace",
227
+ };
228
+ }
229
+ }
230
+ return {
231
+ entryUri: input.documentUri,
232
+ workspaceRootUri,
233
+ includeSearchPathUris: [],
234
+ maxDepth: input.defaults.maxDepth,
235
+ maxFiles: input.defaults.maxFiles,
236
+ allowIncludeOutsideWorkspace: false,
237
+ crossFileEnabled: true,
238
+ mode: "document",
239
+ };
240
+ }
241
+ const config = await parseProjectConfig(nearestConfigPath);
242
+ const configDir = dirname(nearestConfigPath);
243
+ const includePaths = (config?.includePaths ?? []).map((pathValue) => toFileUri(resolve(configDir, pathValue)));
244
+ const crossFileEnabled = config?.crossFile?.enabled !== false;
245
+ const maxDepth = clampPositiveInteger(config?.crossFile?.maxDepth) ??
246
+ input.defaults.maxDepth;
247
+ const maxFiles = clampPositiveInteger(config?.crossFile?.maxFiles) ??
248
+ input.defaults.maxFiles;
249
+ const allowIncludeOutsideWorkspace = config?.crossFile?.externalIncludes ?? false;
250
+ const workspacePatterns = config?.workspaces ?? [];
251
+ if (workspacePatterns.length > 0) {
252
+ const workspaceDir = resolveWorkspaceDirFromPatterns(configDir, dirname(documentPathResolved), workspacePatterns) ?? dirname(documentPathResolved);
253
+ const workspaceEntry = resolve(workspaceDir, DEFAULT_WORKSPACE_ENTRY_FILE);
254
+ const entryUri = (await pathExists(workspaceEntry))
255
+ ? toFileUri(workspaceEntry)
256
+ : input.documentUri;
257
+ return {
258
+ entryUri,
259
+ workspaceRootUri: toFileUri(workspaceDir),
260
+ includeSearchPathUris: dedupeUris([
261
+ toFileUri(configDir),
262
+ ...includePaths,
263
+ ]),
264
+ maxDepth,
265
+ maxFiles,
266
+ allowIncludeOutsideWorkspace,
267
+ crossFileEnabled,
268
+ mode: "workspace",
269
+ configPath: nearestConfigPath,
270
+ };
271
+ }
272
+ const configuredMain = config?.main;
273
+ if (configuredMain) {
274
+ const resolvedMain = isAbsolute(configuredMain)
275
+ ? configuredMain
276
+ : resolve(configDir, configuredMain);
277
+ const entryUri = (await pathExists(resolvedMain))
278
+ ? toFileUri(resolvedMain)
279
+ : input.documentUri;
280
+ return {
281
+ entryUri,
282
+ workspaceRootUri: toFileUri(configDir),
283
+ includeSearchPathUris: dedupeUris([
284
+ toFileUri(configDir),
285
+ ...includePaths,
286
+ ]),
287
+ maxDepth,
288
+ maxFiles,
289
+ allowIncludeOutsideWorkspace,
290
+ crossFileEnabled,
291
+ mode: "main",
292
+ configPath: nearestConfigPath,
293
+ };
294
+ }
295
+ return {
296
+ entryUri: input.documentUri,
297
+ workspaceRootUri: toFileUri(configDir),
298
+ includeSearchPathUris: dedupeUris([toFileUri(configDir), ...includePaths]),
299
+ maxDepth,
300
+ maxFiles,
301
+ allowIncludeOutsideWorkspace,
302
+ crossFileEnabled,
303
+ mode: "document",
304
+ configPath: nearestConfigPath,
305
+ };
306
+ };
307
+ //# sourceMappingURL=project-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
package/dist/shared.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { CompletionItemKind, SymbolKind, type Range, type Position } from "vscode-languageserver/node.js";
2
2
  import type { BirdDeclaration, SourceRange } from "@birdcc/parser";
3
+ export { toCanonicalKey, getLineText, type GetLineTextDocument, showMessage, showInfo, showWarning, showInfoOnce, publishDiagnostics, clearDiagnostics, clearDiagnosticsMany, withDocument, type DocumentStore, } from "./utils.js";
3
4
  export declare const KEYWORD_DOCS: Record<string, string>;
4
5
  export interface LspDeclarationMetadata {
5
6
  symbolName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,KAAK,EACV,KAAK,QAAQ,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAoBnE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG/C,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,WAAW,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,KAAG,KAS9C,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,EAClB,OAAO,WAAW,KACjB,OAiBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,aAAa,eAAe,KAC3B,sBAAsB,GAAG,IAwG3B,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,KAAK,EACV,KAAK,QAAQ,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOnE,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,mBAAmB,EACxB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAmBpB,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG/C,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,WAAW,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,WAAW,KAAG,KAA8B,CAAC;AAE/E,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,EAClB,OAAO,WAAW,KACjB,OAAiD,CAAC;AAErD,eAAO,MAAM,mBAAmB,GAC9B,aAAa,eAAe,KAC3B,sBAAsB,GAAG,IAwG3B,CAAC"}
package/dist/shared.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { CompletionItemKind, SymbolKind, } from "vscode-languageserver/node.js";
2
2
  import { HOVER_KEYWORD_DOCS } from "./hover-docs.js";
3
+ import { toLspRange as toLspRangeUtil, isPositionInRange as isPositionInRangeUtil, } from "./utils.js";
4
+ export { toCanonicalKey, getLineText, showMessage, showInfo, showWarning, showInfoOnce, publishDiagnostics, clearDiagnostics, clearDiagnosticsMany, withDocument, } from "./utils.js";
3
5
  const BASE_KEYWORD_DOCS = {
4
6
  protocol: "Define a protocol instance. Example: `protocol bgp edge { ... }`.",
5
7
  template: "Define a reusable protocol template.",
@@ -20,30 +22,8 @@ export const KEYWORD_DOCS = {
20
22
  ...BASE_KEYWORD_DOCS,
21
23
  ...HOVER_KEYWORD_DOCS,
22
24
  };
23
- export const toLspRange = (range) => ({
24
- start: {
25
- line: Math.max(range.line - 1, 0),
26
- character: Math.max(range.column - 1, 0),
27
- },
28
- end: {
29
- line: Math.max(range.endLine - 1, 0),
30
- character: Math.max(range.endColumn - 1, 0),
31
- },
32
- });
33
- export const isPositionInRange = (position, range) => {
34
- const line = position.line + 1;
35
- const character = position.character + 1;
36
- if (line < range.line || line > range.endLine) {
37
- return false;
38
- }
39
- if (line === range.line && character < range.column) {
40
- return false;
41
- }
42
- if (line === range.endLine && character > range.endColumn) {
43
- return false;
44
- }
45
- return true;
46
- };
25
+ export const toLspRange = (range) => toLspRangeUtil(range);
26
+ export const isPositionInRange = (position, range) => isPositionInRangeUtil(position, range);
47
27
  export const declarationMetadata = (declaration) => {
48
28
  const escapeMarkdownCode = (text) => text.replaceAll("\\", "\\\\").replaceAll("`", "\\`");
49
29
  switch (declaration.kind) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import type { SymbolDefinition, SymbolReference } from "@birdcc/core";
2
2
  import type { Location, Position } from "vscode-languageserver/node.js";
3
+ import { type SourceRangeLike } from "./utils.js";
3
4
  export interface SymbolLookupIndex {
4
5
  definitionsByName: Map<string, SymbolDefinition[]>;
5
6
  referencesByName: Map<string, SymbolReference[]>;
6
7
  }
7
- export declare const containsPosition: (range: {
8
- line: number;
9
- column: number;
10
- endLine: number;
11
- endColumn: number;
12
- }, position: Position) => boolean;
8
+ /**
9
+ * Check whether a 0-based LSP Position falls inside a 1-based source range.
10
+ * @deprecated Use {@link isPositionInRange} from `./utils.js` directly.
11
+ */
12
+ export declare const containsPosition: (range: SourceRangeLike, position: Position) => boolean;
13
13
  export declare const toLocation: (symbol: SymbolDefinition | SymbolReference) => Location;
14
14
  export declare const extractWordAtPosition: (text: string, position: Position) => string;
15
15
  export declare const dedupeLocations: (locations: Location[]) => Location[];
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-utils.d.ts","sourceRoot":"","sources":["../src/symbol-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;CAClD;AAgBD,eAAO,MAAM,gBAAgB,GAC3B,OAAO;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3E,UAAU,QAAQ,KACjB,OAiBF,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,QAAQ,gBAAgB,GAAG,eAAe,KACzC,QAYD,CAAC;AAEH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,UAAU,QAAQ,KACjB,MAiBF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,QAAQ,EAAE,KAAG,QAAQ,EAsB/D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,gBAAgB,EAAE,EAC/B,YAAY,eAAe,EAAE,KAC5B,iBAgBF,CAAC"}
1
+ {"version":3,"file":"symbol-utils.d.ts","sourceRoot":"","sources":["../src/symbol-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;CAClD;AAgBD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,eAAe,EACtB,UAAU,QAAQ,KACjB,OAA6C,CAAC;AAEjD,eAAO,MAAM,UAAU,GACrB,QAAQ,gBAAgB,GAAG,eAAe,KACzC,QAGD,CAAC;AAsBH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,UAAU,QAAQ,KACjB,MAiBF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,QAAQ,EAAE,KAAG,QAAQ,EAsB/D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,gBAAgB,EAAE,EAC/B,YAAY,eAAe,EAAE,KAC5B,iBAgBF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isPositionInRange, toLspRange, } from "./utils.js";
1
2
  const addToMapList = (map, key, value) => {
2
3
  const existing = map.get(key);
3
4
  if (existing) {
@@ -6,35 +7,33 @@ const addToMapList = (map, key, value) => {
6
7
  }
7
8
  map.set(key, [value]);
8
9
  };
9
- export const containsPosition = (range, position) => {
10
- const line = position.line + 1;
11
- const column = position.character + 1;
12
- if (line < range.line || line > range.endLine) {
13
- return false;
14
- }
15
- if (line === range.line && column < range.column) {
16
- return false;
17
- }
18
- if (line === range.endLine && column > range.endColumn) {
19
- return false;
20
- }
21
- return true;
22
- };
10
+ /**
11
+ * Check whether a 0-based LSP Position falls inside a 1-based source range.
12
+ * @deprecated Use {@link isPositionInRange} from `./utils.js` directly.
13
+ */
14
+ export const containsPosition = (range, position) => isPositionInRange(position, range);
23
15
  export const toLocation = (symbol) => ({
24
16
  uri: symbol.uri,
25
- range: {
26
- start: {
27
- line: Math.max(0, symbol.line - 1),
28
- character: Math.max(0, symbol.column - 1),
29
- },
30
- end: {
31
- line: Math.max(0, symbol.endLine - 1),
32
- character: Math.max(0, symbol.endColumn - 1),
33
- },
34
- },
17
+ range: toLspRange(symbol),
35
18
  });
19
+ /** Extract a single line from raw text by scanning for newlines (avoids O(n) split). */
20
+ const extractLine = (text, lineIndex) => {
21
+ let current = 0;
22
+ let start = 0;
23
+ while (current < lineIndex) {
24
+ const newlinePos = text.indexOf("\n", start);
25
+ if (newlinePos === -1) {
26
+ return "";
27
+ }
28
+ start = newlinePos + 1;
29
+ current += 1;
30
+ }
31
+ const end = text.indexOf("\n", start);
32
+ const line = end === -1 ? text.slice(start) : text.slice(start, end);
33
+ return line.endsWith("\r") ? line.slice(0, -1) : line;
34
+ };
36
35
  export const extractWordAtPosition = (text, position) => {
37
- const lineText = text.split(/\r?\n/)[position.line] ?? "";
36
+ const lineText = extractLine(text, position.line);
38
37
  if (position.character < 0 || position.character > lineText.length) {
39
38
  return "";
40
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-utils.js","sourceRoot":"","sources":["../src/symbol-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symbol-utils.js","sourceRoot":"","sources":["../src/symbol-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { InlayHint, Range } from "vscode-languageserver/node.js";
2
+ import type { FunctionReturnHint } from "@birdcc/core";
3
+ export declare const createTypeHintInlayHints: (hints: readonly FunctionReturnHint[], range: Range) => InlayHint[];
4
+ //# sourceMappingURL=type-hint-inlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-hint-inlay.d.ts","sourceRoot":"","sources":["../src/type-hint-inlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUvD,eAAO,MAAM,wBAAwB,GACnC,OAAO,SAAS,kBAAkB,EAAE,EACpC,OAAO,KAAK,KACX,SAAS,EAqBN,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { InlayHintKind } from "vscode-languageserver/node.js";
2
+ const isRangeOverlapping = (hint, range) => {
3
+ const hintLine = hint.declaration.line - 1; // convert 1-based to 0-based
4
+ return hintLine >= range.start.line && hintLine <= range.end.line;
5
+ };
6
+ export const createTypeHintInlayHints = (hints, range) => hints
7
+ .filter((hint) => {
8
+ const returnType = hint.declaredReturnType ?? hint.inferredReturnType;
9
+ return returnType !== "unknown";
10
+ })
11
+ .filter((hint) => isRangeOverlapping(hint, range))
12
+ .map((hint) => {
13
+ const returnType = hint.declaredReturnType ?? hint.inferredReturnType;
14
+ return {
15
+ position: {
16
+ line: hint.declaration.nameRange.endLine - 1,
17
+ character: Math.max(hint.declaration.nameRange.endColumn - 1, 0),
18
+ },
19
+ label: `: ${returnType}`,
20
+ kind: InlayHintKind.Type,
21
+ paddingLeft: true,
22
+ tooltip: hint.declaredReturnType
23
+ ? `Declared return type: ${hint.declaredReturnType}`
24
+ : "Inferred return type (POC)",
25
+ };
26
+ });
27
+ //# sourceMappingURL=type-hint-inlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-hint-inlay.js","sourceRoot":"","sources":["../src/type-hint-inlay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,kBAAkB,GAAG,CACzB,IAAwB,EACxB,KAAY,EACH,EAAE;IACX,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,6BAA6B;IACzE,OAAO,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,KAAoC,EACpC,KAAY,EACC,EAAE,CACf,KAAK;KACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;IACtE,OAAO,UAAU,KAAK,SAAS,CAAC;AAClC,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;IACZ,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;IACtE,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC;YAC5C,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,KAAK,EAAE,KAAK,UAAU,EAAE;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI,CAAC,kBAAkB;YAC9B,CAAC,CAAC,yBAAyB,IAAI,CAAC,kBAAkB,EAAE;YACpD,CAAC,CAAC,4BAA4B;KACb,CAAC;AACxB,CAAC,CAAC,CAAC"}