@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.
- package/README.md +25 -23
- package/dist/asn-completion.d.ts +21 -0
- package/dist/asn-completion.d.ts.map +1 -0
- package/dist/asn-completion.js +42 -0
- package/dist/asn-completion.js.map +1 -0
- package/dist/asn-context.d.ts +9 -0
- package/dist/asn-context.d.ts.map +1 -0
- package/dist/asn-context.js +203 -0
- package/dist/asn-context.js.map +1 -0
- package/dist/asn-hover.d.ts +11 -0
- package/dist/asn-hover.d.ts.map +1 -0
- package/dist/asn-hover.js +33 -0
- package/dist/asn-hover.js.map +1 -0
- package/dist/asn-inlay-hints.d.ts +13 -0
- package/dist/asn-inlay-hints.d.ts.map +1 -0
- package/dist/asn-inlay-hints.js +47 -0
- package/dist/asn-inlay-hints.js.map +1 -0
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +2 -10
- package/dist/diagnostic.js.map +1 -1
- package/dist/document-symbol.js +1 -1
- package/dist/document-symbol.js.map +1 -1
- package/dist/hover-context.d.ts +31 -0
- package/dist/hover-context.d.ts.map +1 -0
- package/dist/hover-context.js +125 -0
- package/dist/hover-context.js.map +1 -0
- package/dist/hover-docs/00-base.yaml +5 -0
- package/dist/hover-docs/10-global-options.yaml +442 -0
- package/dist/hover-docs/20-filter-language.yaml +209 -0
- package/dist/hover-docs/30-channel-options.yaml +244 -0
- package/dist/hover-docs/40-protocol-common.yaml +59 -0
- package/dist/hover-docs/41-protocol-igp.yaml +305 -0
- package/dist/hover-docs/42-protocol-kernel-static.yaml +220 -0
- package/dist/hover-docs/43-protocol-mpls.yaml +40 -0
- package/dist/hover-docs/44-protocol-extended.yaml +635 -0
- package/dist/hover-docs/50-protocol-bgp.yaml +482 -0
- package/dist/hover-docs/60-protocol-ospf.yaml +527 -0
- package/dist/hover-docs.d.ts +5 -1
- package/dist/hover-docs.d.ts.map +1 -1
- package/dist/hover-docs.js +376 -51
- package/dist/hover-docs.js.map +1 -1
- package/dist/hover-usage/00-base.yaml +2 -0
- package/dist/hover-usage/10-global-usage.yaml +73 -0
- package/dist/hover-usage/20-filter-usage.yaml +41 -0
- package/dist/hover-usage/30-channel-usage.yaml +41 -0
- package/dist/hover-usage/40-protocol-usage.yaml +258 -0
- package/dist/hover-usage/50-bgp-usage.yaml +254 -0
- package/dist/hover-usage/60-ospf-usage.yaml +340 -0
- package/dist/hover.d.ts +10 -0
- package/dist/hover.d.ts.map +1 -1
- package/dist/hover.js +152 -46
- package/dist/hover.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/init/workspace-init.d.ts +28 -0
- package/dist/init/workspace-init.d.ts.map +1 -0
- package/dist/init/workspace-init.js +72 -0
- package/dist/init/workspace-init.js.map +1 -0
- package/dist/lsp-server.d.ts +7 -1
- package/dist/lsp-server.d.ts.map +1 -1
- package/dist/lsp-server.js +277 -65
- package/dist/lsp-server.js.map +1 -1
- package/dist/project-config.d.ts +22 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +307 -0
- package/dist/project-config.js.map +1 -0
- package/dist/shared.d.ts +1 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +4 -24
- package/dist/shared.js.map +1 -1
- package/dist/symbol-utils.d.ts +6 -6
- package/dist/symbol-utils.d.ts.map +1 -1
- package/dist/symbol-utils.js +24 -25
- package/dist/symbol-utils.js.map +1 -1
- package/dist/type-hint-inlay.d.ts +4 -0
- package/dist/type-hint-inlay.d.ts.map +1 -0
- package/dist/type-hint-inlay.js +27 -0
- package/dist/type-hint-inlay.js.map +1 -0
- package/dist/utils.d.ts +65 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -0
- package/package.json +20 -9
- package/.oxfmtrc.json +0 -16
- package/dist/hover-docs.yaml +0 -600
- package/scripts/copy-hover-yaml.mjs +0 -14
- package/src/completion.ts +0 -223
- package/src/definition.ts +0 -50
- package/src/diagnostic.ts +0 -48
- package/src/document-symbol.ts +0 -27
- package/src/hover-docs.ts +0 -223
- package/src/hover-docs.yaml +0 -600
- package/src/hover.ts +0 -122
- package/src/index.ts +0 -8
- package/src/lsp-server.ts +0 -350
- package/src/references.ts +0 -107
- package/src/server.ts +0 -4
- package/src/shared.ts +0 -182
- package/src/symbol-utils.ts +0 -126
- package/src/validation.ts +0 -85
- package/test/hover-docs.test.ts +0 -18
- package/test/lsp.test.ts +0 -304
- package/test/perf-baseline.test.ts +0 -96
- package/test/validation.test.ts +0 -212
- package/tsconfig.json +0 -8
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MessageType, type Connection, type Diagnostic, type Position, type Range } from "vscode-languageserver/node.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal 1-based source range interface accepted by shared LSP utilities.
|
|
4
|
+
* Structurally compatible with `SourceRange` from `@birdcc/parser` and
|
|
5
|
+
* `SymbolDefinition`/`SymbolReference` from `@birdcc/core`.
|
|
6
|
+
*/
|
|
7
|
+
export interface SourceRangeLike {
|
|
8
|
+
readonly line: number;
|
|
9
|
+
readonly column: number;
|
|
10
|
+
readonly endLine: number;
|
|
11
|
+
readonly endColumn: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Document-like object accepted by {@link getLineText}.
|
|
15
|
+
* Supports both `lineAt` (VS Code vscode.TextDocument) and `getText`
|
|
16
|
+
* (vscode-languageserver-textdocument TextDocument) interfaces.
|
|
17
|
+
*/
|
|
18
|
+
export interface GetLineTextDocument {
|
|
19
|
+
readonly lineCount: number;
|
|
20
|
+
lineAt?: (line: number) => {
|
|
21
|
+
readonly text: string;
|
|
22
|
+
};
|
|
23
|
+
getText?: (range?: {
|
|
24
|
+
readonly start: {
|
|
25
|
+
readonly line: number;
|
|
26
|
+
readonly character: number;
|
|
27
|
+
};
|
|
28
|
+
readonly end: {
|
|
29
|
+
readonly line: number;
|
|
30
|
+
readonly character: number;
|
|
31
|
+
};
|
|
32
|
+
}) => string;
|
|
33
|
+
}
|
|
34
|
+
/** Normalize a keyword or phrase into a canonical lowercase single-space key. */
|
|
35
|
+
export declare const toCanonicalKey: (value: string) => string;
|
|
36
|
+
/** Convert a 1-based {@link SourceRangeLike} into a 0-based LSP {@link Range}. */
|
|
37
|
+
export declare const toLspRange: (range: SourceRangeLike) => Range;
|
|
38
|
+
/** Check whether a 0-based LSP {@link Position} falls inside a 1-based {@link SourceRangeLike}. */
|
|
39
|
+
export declare const isPositionInRange: (position: Position, range: SourceRangeLike) => boolean;
|
|
40
|
+
/** Extract the text content of a single line from a document-like object. */
|
|
41
|
+
export declare const getLineText: (document: GetLineTextDocument, line: number) => string;
|
|
42
|
+
/** Send a typed `window/showMessage` notification. */
|
|
43
|
+
export declare const showMessage: (connection: Connection, type: MessageType, message: string) => void;
|
|
44
|
+
/** Send an Info-level `window/showMessage` notification. */
|
|
45
|
+
export declare const showInfo: (connection: Connection, message: string) => void;
|
|
46
|
+
/** Send a Warning-level `window/showMessage` notification. */
|
|
47
|
+
export declare const showWarning: (connection: Connection, message: string) => void;
|
|
48
|
+
/** Send an Info-level notification only once per `key`. */
|
|
49
|
+
export declare const showInfoOnce: (connection: Connection, seen: Set<string>, key: string, message: string) => void;
|
|
50
|
+
/** Publish diagnostics for a single URI. */
|
|
51
|
+
export declare const publishDiagnostics: (connection: Connection, uri: string, diagnostics: Diagnostic[], version?: number) => void;
|
|
52
|
+
/** Clear diagnostics for a single URI. */
|
|
53
|
+
export declare const clearDiagnostics: (connection: Connection, uri: string) => void;
|
|
54
|
+
/** Clear diagnostics for multiple URIs at once. */
|
|
55
|
+
export declare const clearDiagnosticsMany: (connection: Connection, uris: Iterable<string>) => void;
|
|
56
|
+
/** Minimal document store interface accepted by {@link withDocument}. */
|
|
57
|
+
export interface DocumentStore<TDocument> {
|
|
58
|
+
get(uri: string): TDocument | undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Guard helper that looks up a document by URI and runs `fn` only when found.
|
|
62
|
+
* Returns `fallback` when the document is not in the store.
|
|
63
|
+
*/
|
|
64
|
+
export declare const withDocument: <TDocument, TResult>(store: DocumentStore<TDocument>, uri: string, fallback: TResult, fn: (doc: TDocument) => Promise<TResult> | TResult) => Promise<TResult>;
|
|
65
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { MessageType, } from "vscode-languageserver/node.js";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// String utilities
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/** Normalize a keyword or phrase into a canonical lowercase single-space key. */
|
|
6
|
+
export const toCanonicalKey = (value) => value.trim().toLowerCase().replace(/\s+/g, " ");
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Range / position utilities
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/** Convert a 1-based {@link SourceRangeLike} into a 0-based LSP {@link Range}. */
|
|
11
|
+
export const toLspRange = (range) => ({
|
|
12
|
+
start: {
|
|
13
|
+
line: Math.max(range.line - 1, 0),
|
|
14
|
+
character: Math.max(range.column - 1, 0),
|
|
15
|
+
},
|
|
16
|
+
end: {
|
|
17
|
+
line: Math.max(range.endLine - 1, 0),
|
|
18
|
+
character: Math.max(range.endColumn - 1, 0),
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
/** Check whether a 0-based LSP {@link Position} falls inside a 1-based {@link SourceRangeLike}. */
|
|
22
|
+
export const isPositionInRange = (position, range) => {
|
|
23
|
+
const line = position.line + 1;
|
|
24
|
+
const character = position.character + 1;
|
|
25
|
+
if (line < range.line || line > range.endLine) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (line === range.line && character < range.column) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (line === range.endLine && character > range.endColumn) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
};
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Document text helpers
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
/** Extract the text content of a single line from a document-like object. */
|
|
40
|
+
export const getLineText = (document, line) => {
|
|
41
|
+
if (document.lineAt && typeof document.lineAt === "function") {
|
|
42
|
+
return document.lineAt(line).text;
|
|
43
|
+
}
|
|
44
|
+
if (document.getText && typeof document.getText === "function") {
|
|
45
|
+
const start = { line, character: 0 };
|
|
46
|
+
const end = line + 1 < document.lineCount
|
|
47
|
+
? { line: line + 1, character: 0 }
|
|
48
|
+
: { line, character: Number.MAX_SAFE_INTEGER };
|
|
49
|
+
return document.getText({ start, end }).replace(/\r?\n$/, "");
|
|
50
|
+
}
|
|
51
|
+
return "";
|
|
52
|
+
};
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// LSP notification helpers
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
/** Send a typed `window/showMessage` notification. */
|
|
57
|
+
export const showMessage = (connection, type, message) => {
|
|
58
|
+
connection.sendNotification("window/showMessage", { type, message });
|
|
59
|
+
};
|
|
60
|
+
/** Send an Info-level `window/showMessage` notification. */
|
|
61
|
+
export const showInfo = (connection, message) => showMessage(connection, MessageType.Info, message);
|
|
62
|
+
/** Send a Warning-level `window/showMessage` notification. */
|
|
63
|
+
export const showWarning = (connection, message) => showMessage(connection, MessageType.Warning, message);
|
|
64
|
+
/** Send an Info-level notification only once per `key`. */
|
|
65
|
+
export const showInfoOnce = (connection, seen, key, message) => {
|
|
66
|
+
if (seen.has(key))
|
|
67
|
+
return;
|
|
68
|
+
seen.add(key);
|
|
69
|
+
showInfo(connection, message);
|
|
70
|
+
};
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Diagnostics helpers
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
/** Publish diagnostics for a single URI. */
|
|
75
|
+
export const publishDiagnostics = (connection, uri, diagnostics, version) => {
|
|
76
|
+
connection.sendDiagnostics({ uri, version, diagnostics });
|
|
77
|
+
};
|
|
78
|
+
/** Clear diagnostics for a single URI. */
|
|
79
|
+
export const clearDiagnostics = (connection, uri) => {
|
|
80
|
+
connection.sendDiagnostics({ uri, diagnostics: [] });
|
|
81
|
+
};
|
|
82
|
+
/** Clear diagnostics for multiple URIs at once. */
|
|
83
|
+
export const clearDiagnosticsMany = (connection, uris) => {
|
|
84
|
+
for (const uri of uris)
|
|
85
|
+
clearDiagnostics(connection, uri);
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Guard helper that looks up a document by URI and runs `fn` only when found.
|
|
89
|
+
* Returns `fallback` when the document is not in the store.
|
|
90
|
+
*/
|
|
91
|
+
export const withDocument = async (store, uri, fallback, fn) => {
|
|
92
|
+
const doc = store.get(uri);
|
|
93
|
+
if (!doc)
|
|
94
|
+
return fallback;
|
|
95
|
+
return await fn(doc);
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@birdcc/lsp",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"private": false,
|
|
3
|
+
"version": "0.1.0-beta.0",
|
|
5
4
|
"type": "module",
|
|
6
5
|
"license": "GPL-3.0-only",
|
|
7
6
|
"author": {
|
|
@@ -9,21 +8,30 @@
|
|
|
9
8
|
"email": "npm-dev@birdcc.link",
|
|
10
9
|
"url": "https://github.com/bird-chinese-community/"
|
|
11
10
|
},
|
|
11
|
+
"description": "Language Server Protocol implementation for BIRD2 configuration files.",
|
|
12
12
|
"main": "./dist/index.js",
|
|
13
|
-
"types": "./
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
16
|
-
"types": "./
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
17
|
"default": "./dist/index.js"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"files": [
|
|
22
|
+
"dist/**",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE"
|
|
25
|
+
],
|
|
20
26
|
"dependencies": {
|
|
21
|
-
"
|
|
27
|
+
"@birdcc/core": "0.1.0-beta.0",
|
|
28
|
+
"@birdcc/formatter": "0.1.0-beta.0",
|
|
29
|
+
"@birdcc/intel": "^0.0.1-2026-03-05.2",
|
|
30
|
+
"@birdcc/linter": "0.1.0-beta.0",
|
|
31
|
+
"@birdcc/parser": "0.1.0-beta.0",
|
|
22
32
|
"vscode-languageserver": "^9.0.1",
|
|
23
33
|
"vscode-languageserver-textdocument": "^1.0.12",
|
|
24
|
-
"
|
|
25
|
-
"@birdcc/core": "0.0.1-alpha.0",
|
|
26
|
-
"@birdcc/parser": "0.0.1-alpha.0"
|
|
34
|
+
"yaml": "^2.8.2"
|
|
27
35
|
},
|
|
28
36
|
"repository": {
|
|
29
37
|
"type": "git",
|
|
@@ -35,10 +43,13 @@
|
|
|
35
43
|
"url": "https://github.com/bird-chinese-community/BIRD-LSP/issues"
|
|
36
44
|
},
|
|
37
45
|
"scripts": {
|
|
38
|
-
"build": "tsc -p tsconfig.json && node scripts/copy-hover-yaml.mjs",
|
|
46
|
+
"build": "tsc -p tsconfig.json && node scripts/copy-hover-yaml.mjs && pnpm run hover:coverage:check",
|
|
39
47
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
40
48
|
"lint": "oxlint --deny-warnings src test",
|
|
41
49
|
"test": "vitest run",
|
|
50
|
+
"test:quick": "vitest run",
|
|
51
|
+
"hover:coverage": "node scripts/report-hover-coverage.mjs",
|
|
52
|
+
"hover:coverage:check": "node scripts/report-hover-coverage.mjs --check",
|
|
42
53
|
"format": "oxfmt .",
|
|
43
54
|
"coverage": "vitest run --coverage --coverage.provider=v8 --coverage.reporter=text-summary --coverage.reporter=json-summary"
|
|
44
55
|
}
|
package/.oxfmtrc.json
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../../../node_modules/oxfmt/configuration_schema.json",
|
|
3
|
-
"ignorePatterns": [
|
|
4
|
-
"node_modules/*",
|
|
5
|
-
"package.json",
|
|
6
|
-
"dist/*",
|
|
7
|
-
".turbo/*",
|
|
8
|
-
"target/*",
|
|
9
|
-
"*.lock",
|
|
10
|
-
"pnpm-*.yaml",
|
|
11
|
-
"*-lock.json"
|
|
12
|
-
],
|
|
13
|
-
"printWidth": 80,
|
|
14
|
-
"tabWidth": 2,
|
|
15
|
-
"useTabs": false
|
|
16
|
-
}
|