@azerothjs/language-server 0.5.0-beta.1 → 0.6.0-beta.1
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 +5 -1
- package/dist/docgen-cli.d.ts +40 -0
- package/dist/docgen-cli.d.ts.map +1 -0
- package/dist/docgen-cli.js +232 -0
- package/dist/docgen-cli.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +50 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +314 -101
- package/dist/server.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -13,7 +13,11 @@ repository, among others) launch this server and talk to it over stdio.
|
|
|
13
13
|
|
|
14
14
|
## Architecture
|
|
15
15
|
|
|
16
|
-
The server holds one `AzerothLanguageService`
|
|
16
|
+
The server holds one `AzerothLanguageService` **per workspace root** (multi-root
|
|
17
|
+
aware: each document resolves against the service whose root is its longest
|
|
18
|
+
matching prefix — its nearest project — so files in different roots type-check
|
|
19
|
+
against their own `tsconfig`; roots added/removed at runtime are tracked via
|
|
20
|
+
`workspace/didChangeWorkspaceFolders`) and a
|
|
17
21
|
document manager (`vscode-languageserver`'s `TextDocuments`). Text changes are
|
|
18
22
|
mirrored into the service with `didOpen`/`didChange`/`didClose`, and each LSP
|
|
19
23
|
request handler calls the matching service method and returns the result almost
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/** Options controlling a single docgen run. */
|
|
3
|
+
export interface DocgenOptions {
|
|
4
|
+
/** Directory to search for `.azeroth` files (default: cwd). */
|
|
5
|
+
cwd?: string;
|
|
6
|
+
/** Explicit tsconfig path; otherwise the nearest one is used. */
|
|
7
|
+
project?: string;
|
|
8
|
+
/** Directory to write one `.md` per component into; omitted -> stdout. */
|
|
9
|
+
out?: string;
|
|
10
|
+
/** With `--out`, emit a browsable static HTML site instead of `.md` files. */
|
|
11
|
+
html?: boolean;
|
|
12
|
+
/** Sink for stdout output (default: process.stdout). */
|
|
13
|
+
write?: (text: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Sink for files the run would write, keyed by absolute path. When given, the
|
|
16
|
+
* run captures content here instead of touching disk (so tests need no temp
|
|
17
|
+
* dir); omitted -> real {@link writeFileSync}.
|
|
18
|
+
*/
|
|
19
|
+
writeFile?: (filePath: string, content: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/** Outcome of a docgen run. */
|
|
22
|
+
export interface DocgenResult {
|
|
23
|
+
/** Number of `.azeroth` files documented. */
|
|
24
|
+
fileCount: number;
|
|
25
|
+
}
|
|
26
|
+
/** Parses the argv subset this CLI understands into {@link DocgenOptions}. */
|
|
27
|
+
export declare function parseArgs(argv: string[]): DocgenOptions;
|
|
28
|
+
/**
|
|
29
|
+
* Documents every `.azeroth` file under `cwd`. With no `--out` the markdown is
|
|
30
|
+
* printed to stdout, each file under a `<!-- file: rel/path -->` header; with
|
|
31
|
+
* `--out` one `.md` per component is written there instead. Returns the file
|
|
32
|
+
* count; the caller decides the process exit code.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const { fileCount } = runDocgen({ cwd: 'app', out: 'docs' });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function runDocgen(options?: DocgenOptions): DocgenResult;
|
|
40
|
+
//# sourceMappingURL=docgen-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docgen-cli.d.ts","sourceRoot":"","sources":["../src/docgen-cli.ts"],"names":[],"mappings":";AAeA,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAE1B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,wDAAwD;IACxD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAEzB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAgCvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,YAAY,CA+EnE"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// azeroth-docgen: renders a markdown API reference for every `.azeroth`
|
|
3
|
+
// component under a directory. It builds the same combined program azeroth-tsc
|
|
4
|
+
// uses (so prop types resolve against the project's REAL tsconfig types), opens
|
|
5
|
+
// each file in the language service, and asks the docgen module for that file's
|
|
6
|
+
// markdown. With no `--out` the docs print to stdout under a per-file header; an
|
|
7
|
+
// `--out` directory writes one `.md` per component instead. The heavy lifting
|
|
8
|
+
// lives in the testable `runDocgen`; the bin shim is a thin argv parse.
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import { pathToFileURL } from 'node:url';
|
|
11
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import ts from 'typescript';
|
|
13
|
+
import { AzerothLanguageService, generateComponentDocs, pathToUri } from '@azerothjs/language-service';
|
|
14
|
+
/** Parses the argv subset this CLI understands into {@link DocgenOptions}. */
|
|
15
|
+
export function parseArgs(argv) {
|
|
16
|
+
const options = {};
|
|
17
|
+
for (let i = 0; i < argv.length; i++) {
|
|
18
|
+
const arg = argv[i];
|
|
19
|
+
if (arg === '--project' || arg === '-p') {
|
|
20
|
+
options.project = argv[++i];
|
|
21
|
+
}
|
|
22
|
+
else if (arg.startsWith('--project=')) {
|
|
23
|
+
options.project = arg.slice('--project='.length);
|
|
24
|
+
}
|
|
25
|
+
else if (arg === '--out' || arg === '-o') {
|
|
26
|
+
options.out = argv[++i];
|
|
27
|
+
}
|
|
28
|
+
else if (arg.startsWith('--out=')) {
|
|
29
|
+
options.out = arg.slice('--out='.length);
|
|
30
|
+
}
|
|
31
|
+
else if (arg === '--html') {
|
|
32
|
+
options.html = true;
|
|
33
|
+
}
|
|
34
|
+
else if (!arg.startsWith('-')) {
|
|
35
|
+
options.cwd = arg;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return options;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Documents every `.azeroth` file under `cwd`. With no `--out` the markdown is
|
|
42
|
+
* printed to stdout, each file under a `<!-- file: rel/path -->` header; with
|
|
43
|
+
* `--out` one `.md` per component is written there instead. Returns the file
|
|
44
|
+
* count; the caller decides the process exit code.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const { fileCount } = runDocgen({ cwd: 'app', out: 'docs' });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function runDocgen(options = {}) {
|
|
52
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
53
|
+
const write = options.write ?? ((text) => {
|
|
54
|
+
process.stdout.write(text);
|
|
55
|
+
});
|
|
56
|
+
const writeFile = options.writeFile ?? ((filePath, content) => {
|
|
57
|
+
writeFileSync(filePath, content);
|
|
58
|
+
});
|
|
59
|
+
// rootProjectFiles: pull the project's real `.ts` files into the same
|
|
60
|
+
// program as the `.azeroth` virtual modules, so prop types that reference
|
|
61
|
+
// `.ts`-declared types resolve to real types rather than `any`.
|
|
62
|
+
const service = new AzerothLanguageService(cwd, options.project, { rootProjectFiles: true });
|
|
63
|
+
const files = ts.sys.readDirectory(cwd, ['.azeroth'], ['**/node_modules/**', '**/dist/**', '**/.git/**'], ['**/*.azeroth']);
|
|
64
|
+
const outDir = options.out ? path.resolve(cwd, options.out) : undefined;
|
|
65
|
+
// Only create the directory for real disk writes; a `writeFile` sink (tests)
|
|
66
|
+
// captures content in memory and must not leave an empty dir behind.
|
|
67
|
+
if (outDir && !options.writeFile) {
|
|
68
|
+
mkdirSync(outDir, { recursive: true });
|
|
69
|
+
}
|
|
70
|
+
// pages: collected only for the HTML index, so it links every component page.
|
|
71
|
+
const pages = [];
|
|
72
|
+
let fileCount = 0;
|
|
73
|
+
for (const file of files) {
|
|
74
|
+
const source = ts.sys.readFile(file);
|
|
75
|
+
if (source === undefined) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const uri = pathToUri(file);
|
|
79
|
+
service.didOpen(uri, source);
|
|
80
|
+
const markdown = generateComponentDocs(service, uri);
|
|
81
|
+
fileCount++;
|
|
82
|
+
if (outDir && options.html) {
|
|
83
|
+
const base = path.basename(file).replace(/\.azeroth$/, '');
|
|
84
|
+
writeFile(path.join(outDir, `${base}.html`), renderHtmlPage(markdown));
|
|
85
|
+
pages.push({ name: componentName(markdown) ?? base, file: `${base}.html` });
|
|
86
|
+
}
|
|
87
|
+
else if (outDir) {
|
|
88
|
+
const base = path.basename(file).replace(/\.azeroth$/, '');
|
|
89
|
+
writeFile(path.join(outDir, `${base}.md`), markdown);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const rel = path.relative(cwd, file).replace(/\\/g, '/');
|
|
93
|
+
write(`<!-- file: ${rel} -->\n${markdown}\n`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (outDir && options.html) {
|
|
97
|
+
writeFile(path.join(outDir, 'index.html'), renderHtmlIndex(pages));
|
|
98
|
+
}
|
|
99
|
+
if (outDir) {
|
|
100
|
+
const rel = path.relative(cwd, outDir).replace(/\\/g, '/') || '.';
|
|
101
|
+
write(`Wrote ${fileCount} doc(s) to ${rel}.\n`);
|
|
102
|
+
}
|
|
103
|
+
return { fileCount };
|
|
104
|
+
}
|
|
105
|
+
/** The h1 text (`# Name`) of a docgen markdown block, or null when absent. */
|
|
106
|
+
function componentName(markdown) {
|
|
107
|
+
const match = markdown.match(/^# (.+)$/m);
|
|
108
|
+
return match ? match[1].trim() : null;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Converts ONE docgen markdown block to an HTML body fragment. This is not a
|
|
112
|
+
* general markdown parser: docgen's output is a known, narrow shape (`# h1`, an
|
|
113
|
+
* optional paragraph, a `## Props` h2, then either a sentence or a GFM pipe
|
|
114
|
+
* table), so a line walk over those exact forms is enough - and keeps the CLI
|
|
115
|
+
* dependency-free.
|
|
116
|
+
*/
|
|
117
|
+
function markdownToHtml(markdown) {
|
|
118
|
+
const lines = markdown.replace(/\r\n/g, '\n').split('\n');
|
|
119
|
+
const html = [];
|
|
120
|
+
for (let i = 0; i < lines.length; i++) {
|
|
121
|
+
const line = lines[i];
|
|
122
|
+
if (line === '') {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (line.startsWith('# ')) {
|
|
126
|
+
html.push(`<h1>${inline(line.slice(2))}</h1>`);
|
|
127
|
+
}
|
|
128
|
+
else if (line.startsWith('## ')) {
|
|
129
|
+
html.push(`<h2>${inline(line.slice(3))}</h2>`);
|
|
130
|
+
}
|
|
131
|
+
else if (isTableRow(line) && isSeparatorRow(lines[i + 1] ?? '')) {
|
|
132
|
+
// A GFM table: this header row, the separator we just matched, then
|
|
133
|
+
// every following pipe row until the block ends.
|
|
134
|
+
const header = tableCells(line);
|
|
135
|
+
const rows = [];
|
|
136
|
+
i += 2;
|
|
137
|
+
for (; i < lines.length && isTableRow(lines[i]); i++) {
|
|
138
|
+
rows.push(tableCells(lines[i]));
|
|
139
|
+
}
|
|
140
|
+
i--;
|
|
141
|
+
html.push(renderTable(header, rows));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
html.push(`<p>${inline(line)}</p>`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return html.join('\n');
|
|
148
|
+
}
|
|
149
|
+
/** True for a line that is a pipe-delimited table row. */
|
|
150
|
+
function isTableRow(line) {
|
|
151
|
+
return /^\s*\|.*\|\s*$/.test(line);
|
|
152
|
+
}
|
|
153
|
+
/** True for a GFM header separator row (`| --- | --- |`). */
|
|
154
|
+
function isSeparatorRow(line) {
|
|
155
|
+
return isTableRow(line) && /^[\s|:-]+$/.test(line);
|
|
156
|
+
}
|
|
157
|
+
/** Splits a `| a | b |` row into its trimmed inner cells. */
|
|
158
|
+
function tableCells(line) {
|
|
159
|
+
return line.trim().replace(/^\||\|$/g, '').split('|').map(cell => cell.trim());
|
|
160
|
+
}
|
|
161
|
+
/** Renders a header row + body rows as an HTML `<table>`. */
|
|
162
|
+
function renderTable(header, rows) {
|
|
163
|
+
const head = header.map(cell => `<th>${inline(cell)}</th>`).join('');
|
|
164
|
+
const body = rows
|
|
165
|
+
.map(row => `<tr>${row.map(cell => `<td>${inline(cell)}</td>`).join('')}</tr>`)
|
|
166
|
+
.join('\n');
|
|
167
|
+
return `<table>\n<thead><tr>${head}</tr></thead>\n<tbody>\n${body}\n</tbody>\n</table>`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Renders docgen's inline markdown - `code` and `**bold**` - to HTML, escaping
|
|
171
|
+
* everything else. Backticks bind first so a `**` inside code stays literal.
|
|
172
|
+
*/
|
|
173
|
+
function inline(text) {
|
|
174
|
+
const parts = text.split(/(`[^`]*`)/);
|
|
175
|
+
return parts
|
|
176
|
+
.map(part => {
|
|
177
|
+
if (part.startsWith('`') && part.endsWith('`') && part.length >= 2) {
|
|
178
|
+
return `<code>${escapeHtml(part.slice(1, -1))}</code>`;
|
|
179
|
+
}
|
|
180
|
+
return escapeHtml(part).replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
|
|
181
|
+
})
|
|
182
|
+
.join('');
|
|
183
|
+
}
|
|
184
|
+
/** Escapes the five characters that are unsafe in HTML text/attributes. */
|
|
185
|
+
function escapeHtml(text) {
|
|
186
|
+
return text
|
|
187
|
+
.replace(/&/g, '&')
|
|
188
|
+
.replace(/</g, '<')
|
|
189
|
+
.replace(/>/g, '>')
|
|
190
|
+
.replace(/"/g, '"')
|
|
191
|
+
.replace(/'/g, ''');
|
|
192
|
+
}
|
|
193
|
+
/** The shared inline stylesheet for every generated page. */
|
|
194
|
+
const PAGE_STYLE = 'body{font:16px/1.6 system-ui,sans-serif;max-width:48rem;margin:2rem auto;padding:0 1rem;color:#1b1b1f}'
|
|
195
|
+
+ 'h1{border-bottom:1px solid #ddd;padding-bottom:.3rem}'
|
|
196
|
+
+ 'table{border-collapse:collapse;width:100%}'
|
|
197
|
+
+ 'th,td{border:1px solid #ddd;padding:.4rem .6rem;text-align:left}'
|
|
198
|
+
+ 'th{background:#f6f6f7}'
|
|
199
|
+
+ 'code{background:#f0f0f2;padding:.1rem .3rem;border-radius:3px;font-size:.9em}'
|
|
200
|
+
+ 'a{color:#3056d3}';
|
|
201
|
+
/** Wraps an HTML body fragment in a minimal styled standalone page. */
|
|
202
|
+
function htmlDocument(title, body) {
|
|
203
|
+
return '<!DOCTYPE html>\n'
|
|
204
|
+
+ '<html lang="en">\n'
|
|
205
|
+
+ '<head>\n'
|
|
206
|
+
+ '<meta charset="utf-8">\n'
|
|
207
|
+
+ '<meta name="viewport" content="width=device-width, initial-scale=1">\n'
|
|
208
|
+
+ `<title>${escapeHtml(title)}</title>\n`
|
|
209
|
+
+ `<style>${PAGE_STYLE}</style>\n`
|
|
210
|
+
+ '</head>\n'
|
|
211
|
+
+ `<body>\n${body}\n</body>\n`
|
|
212
|
+
+ '</html>\n';
|
|
213
|
+
}
|
|
214
|
+
/** Renders one component's docgen markdown as a full HTML page. */
|
|
215
|
+
function renderHtmlPage(markdown) {
|
|
216
|
+
return htmlDocument(componentName(markdown) ?? 'Component', markdownToHtml(markdown));
|
|
217
|
+
}
|
|
218
|
+
/** Renders the site landing page linking every component page. */
|
|
219
|
+
function renderHtmlIndex(pages) {
|
|
220
|
+
const items = pages
|
|
221
|
+
.map(page => `<li><a href="${escapeHtml(page.file)}">${escapeHtml(page.name)}</a></li>`)
|
|
222
|
+
.join('\n');
|
|
223
|
+
const body = `<h1>API Reference</h1>\n<ul>\n${items}\n</ul>`;
|
|
224
|
+
return htmlDocument('API Reference', body);
|
|
225
|
+
}
|
|
226
|
+
// Bin entry: only when this module is the process's launched script (not when
|
|
227
|
+
// it is imported for `runDocgen`). All behaviour lives in the testable
|
|
228
|
+
// `runDocgen` above.
|
|
229
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
230
|
+
runDocgen(parseArgs(process.argv.slice(2)));
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=docgen-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docgen-cli.js","sourceRoot":"","sources":["../src/docgen-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { startServer } from './server.ts';
|
|
1
|
+
export { startServer, parseSettings, type AzerothSettings, type FeatureToggles } from './server.ts';
|
|
2
2
|
export { runTsc, watchTsc, parseArgs, type TscOptions, type TscResult, type TscWatcher } from './tsc.ts';
|
|
3
|
+
export { runDocgen, type DocgenOptions, type DocgenResult } from './docgen-cli.ts';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// (`azeroth-language-server`) runs `startServer()` over stdio; this entry point
|
|
5
5
|
// re-exports it so the server can also be embedded (e.g. in a web worker host
|
|
6
6
|
// or an integration test that drives it through an in-memory connection).
|
|
7
|
-
export { startServer } from "./server.js";
|
|
7
|
+
export { startServer, parseSettings } from "./server.js";
|
|
8
8
|
export { runTsc, watchTsc, parseArgs } from "./tsc.js";
|
|
9
|
+
export { runDocgen } from "./docgen-cli.js";
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,0EAA0E;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,0EAA0E;AAE1E,OAAO,EAAE,WAAW,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAoD,MAAM,UAAU,CAAC;AACzG,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,54 @@
|
|
|
1
1
|
import { type Connection } from 'vscode-languageserver/node.js';
|
|
2
|
+
import { type CompletionOptions, type InlayHintOptions } from '@azerothjs/language-service';
|
|
3
|
+
/** All `azeroth.*` settings, resolved with defaults. */
|
|
4
|
+
export interface AzerothSettings {
|
|
5
|
+
diagnostics: {
|
|
6
|
+
enable: boolean;
|
|
7
|
+
};
|
|
8
|
+
format: {
|
|
9
|
+
enable: boolean;
|
|
10
|
+
};
|
|
11
|
+
autoClosingTags: boolean;
|
|
12
|
+
suggest: CompletionOptions;
|
|
13
|
+
inlayHints: InlayHintOptions;
|
|
14
|
+
features: FeatureToggles;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Per-feature on/off switches. Every LSP capability the server advertises can be
|
|
18
|
+
* disabled independently (`azeroth.<feature>.enable: false`), so a user or a
|
|
19
|
+
* project can trim the language experience without disabling the whole server.
|
|
20
|
+
* Gating happens in the request handlers (return empty) rather than by dropping
|
|
21
|
+
* the capability, so toggling takes effect live on the next config change.
|
|
22
|
+
*/
|
|
23
|
+
export interface FeatureToggles {
|
|
24
|
+
completion: boolean;
|
|
25
|
+
hover: boolean;
|
|
26
|
+
definition: boolean;
|
|
27
|
+
typeDefinition: boolean;
|
|
28
|
+
references: boolean;
|
|
29
|
+
documentHighlight: boolean;
|
|
30
|
+
rename: boolean;
|
|
31
|
+
documentSymbol: boolean;
|
|
32
|
+
workspaceSymbol: boolean;
|
|
33
|
+
signatureHelp: boolean;
|
|
34
|
+
semanticTokens: boolean;
|
|
35
|
+
codeActions: boolean;
|
|
36
|
+
folding: boolean;
|
|
37
|
+
selectionRange: boolean;
|
|
38
|
+
onTypeFormatting: boolean;
|
|
39
|
+
linkedEditing: boolean;
|
|
40
|
+
callHierarchy: boolean;
|
|
41
|
+
codeLens: boolean;
|
|
42
|
+
documentLinks: boolean;
|
|
43
|
+
documentColor: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolves an `azeroth.*` client-config blob into a complete {@link AzerothSettings},
|
|
47
|
+
* applying every default for absent/malformed keys. Pure and total (never throws),
|
|
48
|
+
* so it is unit-testable in isolation from the LSP connection. Every value follows
|
|
49
|
+
* the "on unless explicitly `false`" convention, so a partial config is safe.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseSettings(cfg: Record<string, unknown> | undefined): AzerothSettings;
|
|
2
52
|
/**
|
|
3
53
|
* Wires an AzerothJS language server onto an LSP connection. Pass a connection
|
|
4
54
|
* for testing, or omit it to create the standard stdio/IPC connection (used by
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAcA,OAAO,EAKH,KAAK,UAAU,EAOlB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAQH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACxB,MAAM,6BAA6B,CAAC;AAErC,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAE5B,WAAW,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IACjC,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAE3B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAgCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,eAAe,CAqDvF;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,UAA+B,GAAG,IAAI,CA2hB7E"}
|
package/dist/server.js
CHANGED
|
@@ -8,16 +8,26 @@
|
|
|
8
8
|
// providers - lives in the service. Keeping the protocol plumbing separate
|
|
9
9
|
// means the same brain powers the LSP server, the unit tests, and any other
|
|
10
10
|
// editor host.
|
|
11
|
-
import { dirname } from 'node:path';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { existsSync } from 'node:fs';
|
|
12
13
|
import { createConnection, TextDocuments, TextDocumentSyncKind, DidChangeConfigurationNotification } from 'vscode-languageserver/node.js';
|
|
13
14
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
14
|
-
import { AzerothLanguageService, SEMANTIC_TOKEN_TYPES, uriToPath } from '@azerothjs/language-service';
|
|
15
|
+
import { AzerothLanguageService, SEMANTIC_TOKEN_TYPES, SEMANTIC_TOKEN_MODIFIERS, uriToPath } from '@azerothjs/language-service';
|
|
16
|
+
/** Every feature on - the experience an editor gets before any opt-out. */
|
|
17
|
+
const ALL_FEATURES_ON = {
|
|
18
|
+
completion: true, hover: true, definition: true, typeDefinition: true,
|
|
19
|
+
references: true, documentHighlight: true, rename: true, documentSymbol: true,
|
|
20
|
+
workspaceSymbol: true, signatureHelp: true, semanticTokens: true, codeActions: true,
|
|
21
|
+
folding: true, selectionRange: true, onTypeFormatting: true, linkedEditing: true,
|
|
22
|
+
callHierarchy: true, codeLens: true, documentLinks: true, documentColor: true
|
|
23
|
+
};
|
|
15
24
|
/** Defaults applied when a setting is absent or the client can't supply config. */
|
|
16
25
|
const DEFAULT_SETTINGS = {
|
|
17
26
|
diagnostics: { enable: true },
|
|
18
27
|
format: { enable: true },
|
|
19
28
|
autoClosingTags: true,
|
|
20
29
|
suggest: { autoImports: true, componentSnippets: true },
|
|
30
|
+
features: ALL_FEATURES_ON,
|
|
21
31
|
inlayHints: {
|
|
22
32
|
enabled: true,
|
|
23
33
|
parameterNames: 'all',
|
|
@@ -28,11 +38,67 @@ const DEFAULT_SETTINGS = {
|
|
|
28
38
|
enumMemberValues: true
|
|
29
39
|
}
|
|
30
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* Resolves an `azeroth.*` client-config blob into a complete {@link AzerothSettings},
|
|
43
|
+
* applying every default for absent/malformed keys. Pure and total (never throws),
|
|
44
|
+
* so it is unit-testable in isolation from the LSP connection. Every value follows
|
|
45
|
+
* the "on unless explicitly `false`" convention, so a partial config is safe.
|
|
46
|
+
*/
|
|
47
|
+
export function parseSettings(cfg) {
|
|
48
|
+
const c = (cfg ?? {});
|
|
49
|
+
const obj = (v) => (typeof v === 'object' && v !== null ? v : {});
|
|
50
|
+
// A feature is on unless `azeroth.<feature>.enable` is explicitly false.
|
|
51
|
+
const featureOn = (key) => obj(c[key]).enable !== false;
|
|
52
|
+
const diagnostics = obj(c.diagnostics);
|
|
53
|
+
const format = obj(c.format);
|
|
54
|
+
const suggest = obj(c.suggest);
|
|
55
|
+
const inlay = obj(c.inlayHints);
|
|
56
|
+
return {
|
|
57
|
+
diagnostics: { enable: diagnostics.enable !== false },
|
|
58
|
+
format: { enable: format.enable !== false },
|
|
59
|
+
autoClosingTags: c.autoClosingTags !== false,
|
|
60
|
+
suggest: {
|
|
61
|
+
autoImports: suggest.autoImports !== false,
|
|
62
|
+
componentSnippets: suggest.componentSnippets !== false
|
|
63
|
+
},
|
|
64
|
+
features: {
|
|
65
|
+
completion: featureOn('completion'),
|
|
66
|
+
hover: featureOn('hover'),
|
|
67
|
+
definition: featureOn('definition'),
|
|
68
|
+
typeDefinition: featureOn('typeDefinition'),
|
|
69
|
+
references: featureOn('references'),
|
|
70
|
+
documentHighlight: featureOn('documentHighlight'),
|
|
71
|
+
rename: featureOn('rename'),
|
|
72
|
+
documentSymbol: featureOn('documentSymbol'),
|
|
73
|
+
workspaceSymbol: featureOn('workspaceSymbol'),
|
|
74
|
+
signatureHelp: featureOn('signatureHelp'),
|
|
75
|
+
semanticTokens: featureOn('semanticTokens'),
|
|
76
|
+
codeActions: featureOn('codeActions'),
|
|
77
|
+
folding: featureOn('folding'),
|
|
78
|
+
selectionRange: featureOn('selectionRange'),
|
|
79
|
+
onTypeFormatting: featureOn('onTypeFormatting'),
|
|
80
|
+
linkedEditing: featureOn('linkedEditing'),
|
|
81
|
+
callHierarchy: featureOn('callHierarchy'),
|
|
82
|
+
codeLens: featureOn('codeLens'),
|
|
83
|
+
documentLinks: featureOn('documentLinks'),
|
|
84
|
+
documentColor: featureOn('documentColor')
|
|
85
|
+
},
|
|
86
|
+
inlayHints: {
|
|
87
|
+
enabled: inlay.enabled !== false,
|
|
88
|
+
parameterNames: inlay.parameterNames ?? 'all',
|
|
89
|
+
parameterTypes: inlay.parameterTypes !== false,
|
|
90
|
+
variableTypes: inlay.variableTypes !== false,
|
|
91
|
+
propertyDeclarationTypes: inlay.propertyDeclarationTypes !== false,
|
|
92
|
+
functionLikeReturnTypes: inlay.functionLikeReturnTypes !== false,
|
|
93
|
+
enumMemberValues: inlay.enumMemberValues !== false
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
31
97
|
/** The `.azeroth` extension the server is responsible for. */
|
|
32
98
|
const EXTENSION = '.azeroth';
|
|
33
99
|
const SEMANTIC_LEGEND = {
|
|
34
100
|
tokenTypes: [...SEMANTIC_TOKEN_TYPES],
|
|
35
|
-
tokenModifiers: []
|
|
101
|
+
tokenModifiers: [...SEMANTIC_TOKEN_MODIFIERS]
|
|
36
102
|
};
|
|
37
103
|
/**
|
|
38
104
|
* Wires an AzerothJS language server onto an LSP connection. Pass a connection
|
|
@@ -48,46 +114,98 @@ const SEMANTIC_LEGEND = {
|
|
|
48
114
|
*/
|
|
49
115
|
export function startServer(connection = createConnection()) {
|
|
50
116
|
const documents = new TextDocuments(TextDocument);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
117
|
+
// One language service per workspace root, keyed by absolute root path. A
|
|
118
|
+
// document resolves against the service whose root is its longest-matching
|
|
119
|
+
// prefix (i.e. its nearest project); a file outside every root falls back to
|
|
120
|
+
// a service anchored at its own directory. This is what lets a multi-root
|
|
121
|
+
// workspace resolve each file against the correct tsconfig/project instead
|
|
122
|
+
// of forcing everything through the first folder.
|
|
123
|
+
const services = new Map();
|
|
124
|
+
let roots = [];
|
|
125
|
+
const norm = (path) => path.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
126
|
+
/** Registers a workspace root and eagerly creates its service. */
|
|
127
|
+
const registerRoot = (rootUri) => {
|
|
128
|
+
const root = norm(uriToPath(rootUri));
|
|
129
|
+
if (!roots.includes(root)) {
|
|
130
|
+
roots.push(root);
|
|
131
|
+
if (!services.has(root)) {
|
|
132
|
+
services.set(root, new AzerothLanguageService(root));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Nearest ancestor directory of `filePath` that contains a `tsconfig.json`,
|
|
138
|
+
* or null if none up to the filesystem root. This is the file's real TS
|
|
139
|
+
* project: a monorepo opened at its parent has no tsconfig there, but each
|
|
140
|
+
* sub-package (`website/`, `server/`) does, and a file must resolve against
|
|
141
|
+
* its own - for `paths`, `types`, and the zero-config `vite/client` globals
|
|
142
|
+
* (`import.meta.env`, `*.png`). Anchoring on the workspace root instead would
|
|
143
|
+
* resolve against an empty config and wrongly flag those as errors.
|
|
144
|
+
*/
|
|
145
|
+
const nearestProjectDir = (filePath) => {
|
|
146
|
+
let dir = norm(dirname(filePath));
|
|
147
|
+
while (true) {
|
|
148
|
+
if (existsSync(join(dir, 'tsconfig.json'))) {
|
|
149
|
+
return dir;
|
|
150
|
+
}
|
|
151
|
+
const parent = norm(dirname(dir));
|
|
152
|
+
if (parent === dir) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
dir = parent;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
/** Returns the service keyed by `key`, creating it anchored there if needed. */
|
|
159
|
+
const serviceAt = (key) => {
|
|
160
|
+
let svc = services.get(key);
|
|
161
|
+
if (!svc) {
|
|
162
|
+
svc = new AzerothLanguageService(key);
|
|
163
|
+
services.set(key, svc);
|
|
164
|
+
}
|
|
165
|
+
return svc;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* The service for `uri`: anchored at the file's nearest tsconfig project, so
|
|
169
|
+
* each sub-package of a monorepo resolves against its own config regardless
|
|
170
|
+
* of which ancestor folder the editor opened. Falls back to the longest-
|
|
171
|
+
* matching workspace root, then the file's own directory, when no tsconfig
|
|
172
|
+
* exists above the file.
|
|
173
|
+
*/
|
|
174
|
+
const serviceFor = (uri) => {
|
|
175
|
+
const filePath = uriToPath(uri);
|
|
176
|
+
const projectDir = nearestProjectDir(filePath);
|
|
177
|
+
if (projectDir) {
|
|
178
|
+
return serviceAt(projectDir);
|
|
179
|
+
}
|
|
180
|
+
const path = norm(filePath);
|
|
181
|
+
let best = null;
|
|
182
|
+
for (const root of roots) {
|
|
183
|
+
if ((path === root || path.startsWith(root + '/')) && (best === null || root.length > best.length)) {
|
|
184
|
+
best = root;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return serviceAt(best ?? norm(dirname(filePath)));
|
|
59
188
|
};
|
|
60
189
|
const isAzeroth = (uri) => uri.endsWith(EXTENSION);
|
|
190
|
+
// An unexpected throw from the service must not reach the LSP client (it
|
|
191
|
+
// wedges the feature for the session). Degrade to the handler's type-correct
|
|
192
|
+
// safe default and log, so one bad request can't take a capability down.
|
|
193
|
+
const safe = (fn, fallback) => {
|
|
194
|
+
try {
|
|
195
|
+
return fn();
|
|
196
|
+
}
|
|
197
|
+
catch (e) {
|
|
198
|
+
connection.console.error(`[azeroth] request handler failed: ${e instanceof Error ? e.stack ?? e.message : String(e)}`);
|
|
199
|
+
return fallback;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
61
202
|
// --- Settings (azeroth.*), pulled from the client and refreshed on change. ---
|
|
62
203
|
let settings = DEFAULT_SETTINGS;
|
|
63
204
|
let hasConfigurationCapability = false;
|
|
205
|
+
let hasWorkspaceFolderCapability = false;
|
|
64
206
|
/** Merges the client's `azeroth` config over the defaults (tolerant of gaps). */
|
|
65
207
|
const applyConfig = (cfg) => {
|
|
66
|
-
|
|
67
|
-
const obj = (v) => (typeof v === 'object' && v !== null ? v : {});
|
|
68
|
-
const diagnostics = obj(c.diagnostics);
|
|
69
|
-
const format = obj(c.format);
|
|
70
|
-
const suggest = obj(c.suggest);
|
|
71
|
-
const inlay = obj(c.inlayHints);
|
|
72
|
-
settings =
|
|
73
|
-
{
|
|
74
|
-
diagnostics: { enable: diagnostics.enable !== false },
|
|
75
|
-
format: { enable: format.enable !== false },
|
|
76
|
-
autoClosingTags: c.autoClosingTags !== false,
|
|
77
|
-
suggest: {
|
|
78
|
-
autoImports: suggest.autoImports !== false,
|
|
79
|
-
componentSnippets: suggest.componentSnippets !== false
|
|
80
|
-
},
|
|
81
|
-
inlayHints: {
|
|
82
|
-
enabled: inlay.enabled !== false,
|
|
83
|
-
parameterNames: inlay.parameterNames ?? 'all',
|
|
84
|
-
parameterTypes: inlay.parameterTypes !== false,
|
|
85
|
-
variableTypes: inlay.variableTypes !== false,
|
|
86
|
-
propertyDeclarationTypes: inlay.propertyDeclarationTypes !== false,
|
|
87
|
-
functionLikeReturnTypes: inlay.functionLikeReturnTypes !== false,
|
|
88
|
-
enumMemberValues: inlay.enumMemberValues !== false
|
|
89
|
-
}
|
|
90
|
-
};
|
|
208
|
+
settings = parseSettings(cfg);
|
|
91
209
|
};
|
|
92
210
|
/** Pulls `azeroth` settings from the client (no-op if config isn't supported). */
|
|
93
211
|
const refreshSettings = async () => {
|
|
@@ -103,9 +221,16 @@ export function startServer(connection = createConnection()) {
|
|
|
103
221
|
};
|
|
104
222
|
connection.onInitialize((params) => {
|
|
105
223
|
hasConfigurationCapability = params.capabilities.workspace?.configuration === true;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
224
|
+
hasWorkspaceFolderCapability = params.capabilities.workspace?.workspaceFolders === true;
|
|
225
|
+
// Register EVERY folder, not just the first, so each root gets its own
|
|
226
|
+
// project-anchored service.
|
|
227
|
+
if (params.workspaceFolders && params.workspaceFolders.length > 0) {
|
|
228
|
+
for (const folder of params.workspaceFolders) {
|
|
229
|
+
registerRoot(folder.uri);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else if (params.rootUri) {
|
|
233
|
+
registerRoot(params.rootUri);
|
|
109
234
|
}
|
|
110
235
|
// Clients without `workspace/configuration` (e.g. the JetBrains LSP
|
|
111
236
|
// client) pass the `azeroth.*` settings as initializationOptions instead.
|
|
@@ -114,7 +239,7 @@ export function startServer(connection = createConnection()) {
|
|
|
114
239
|
}
|
|
115
240
|
return {
|
|
116
241
|
capabilities: {
|
|
117
|
-
textDocumentSync: TextDocumentSyncKind.
|
|
242
|
+
textDocumentSync: TextDocumentSyncKind.Incremental,
|
|
118
243
|
completionProvider: {
|
|
119
244
|
resolveProvider: true,
|
|
120
245
|
triggerCharacters: ['<', '.', ' ', '{', ':', '@', '/']
|
|
@@ -124,7 +249,7 @@ export function startServer(connection = createConnection()) {
|
|
|
124
249
|
typeDefinitionProvider: true,
|
|
125
250
|
referencesProvider: true,
|
|
126
251
|
documentHighlightProvider: true,
|
|
127
|
-
renameProvider: true,
|
|
252
|
+
renameProvider: { prepareProvider: true },
|
|
128
253
|
documentSymbolProvider: true,
|
|
129
254
|
workspaceSymbolProvider: true,
|
|
130
255
|
signatureHelpProvider: { triggerCharacters: ['(', ','] },
|
|
@@ -137,7 +262,14 @@ export function startServer(connection = createConnection()) {
|
|
|
137
262
|
documentOnTypeFormattingProvider: { firstTriggerCharacter: ';', moreTriggerCharacter: ['}', '\n'] },
|
|
138
263
|
selectionRangeProvider: true,
|
|
139
264
|
linkedEditingRangeProvider: true,
|
|
140
|
-
|
|
265
|
+
callHierarchyProvider: true,
|
|
266
|
+
codeLensProvider: { resolveProvider: true },
|
|
267
|
+
documentLinkProvider: {},
|
|
268
|
+
colorProvider: true,
|
|
269
|
+
inlayHintProvider: true,
|
|
270
|
+
workspace: {
|
|
271
|
+
workspaceFolders: { supported: true, changeNotifications: true }
|
|
272
|
+
}
|
|
141
273
|
}
|
|
142
274
|
};
|
|
143
275
|
});
|
|
@@ -146,6 +278,18 @@ export function startServer(connection = createConnection()) {
|
|
|
146
278
|
void connection.client.register(DidChangeConfigurationNotification.type, undefined);
|
|
147
279
|
void refreshSettings();
|
|
148
280
|
}
|
|
281
|
+
if (hasWorkspaceFolderCapability) {
|
|
282
|
+
connection.workspace.onDidChangeWorkspaceFolders((event) => {
|
|
283
|
+
for (const removed of event.removed) {
|
|
284
|
+
const root = norm(uriToPath(removed.uri));
|
|
285
|
+
roots = roots.filter((r) => r !== root);
|
|
286
|
+
services.delete(root);
|
|
287
|
+
}
|
|
288
|
+
for (const added of event.added) {
|
|
289
|
+
registerRoot(added.uri);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
}
|
|
149
293
|
});
|
|
150
294
|
connection.onDidChangeConfiguration(async () => {
|
|
151
295
|
await refreshSettings();
|
|
@@ -157,31 +301,31 @@ export function startServer(connection = createConnection()) {
|
|
|
157
301
|
});
|
|
158
302
|
// --- Document lifecycle: keep the service's buffer in sync, publish diagnostics. ---
|
|
159
303
|
const refreshDiagnostics = (uri) => {
|
|
160
|
-
if (!isAzeroth(uri)
|
|
304
|
+
if (!isAzeroth(uri)) {
|
|
161
305
|
return;
|
|
162
306
|
}
|
|
163
|
-
const diagnostics = settings.diagnostics.enable ?
|
|
307
|
+
const diagnostics = settings.diagnostics.enable ? safe(() => serviceFor(uri).getDiagnostics(uri), []) : [];
|
|
164
308
|
connection.sendDiagnostics({ uri, diagnostics });
|
|
165
309
|
};
|
|
166
310
|
documents.onDidOpen((event) => {
|
|
167
311
|
if (!isAzeroth(event.document.uri)) {
|
|
168
312
|
return;
|
|
169
313
|
}
|
|
170
|
-
|
|
314
|
+
serviceFor(event.document.uri).didOpen(event.document.uri, event.document.getText());
|
|
171
315
|
refreshDiagnostics(event.document.uri);
|
|
172
316
|
});
|
|
173
317
|
documents.onDidChangeContent((event) => {
|
|
174
318
|
if (!isAzeroth(event.document.uri)) {
|
|
175
319
|
return;
|
|
176
320
|
}
|
|
177
|
-
|
|
321
|
+
serviceFor(event.document.uri).didChange(event.document.uri, event.document.getText());
|
|
178
322
|
refreshDiagnostics(event.document.uri);
|
|
179
323
|
});
|
|
180
324
|
documents.onDidClose((event) => {
|
|
181
|
-
if (!isAzeroth(event.document.uri)
|
|
325
|
+
if (!isAzeroth(event.document.uri)) {
|
|
182
326
|
return;
|
|
183
327
|
}
|
|
184
|
-
|
|
328
|
+
serviceFor(event.document.uri).didClose(event.document.uri);
|
|
185
329
|
connection.sendDiagnostics({ uri: event.document.uri, diagnostics: [] });
|
|
186
330
|
});
|
|
187
331
|
// --- Feature requests: forward to the service, return its (LSP-shaped) results. ---
|
|
@@ -189,103 +333,172 @@ export function startServer(connection = createConnection()) {
|
|
|
189
333
|
// completed document; completion and its resolve always pair up per file.
|
|
190
334
|
let lastCompletionUri = '';
|
|
191
335
|
connection.onCompletion((params) => {
|
|
192
|
-
if (!
|
|
336
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.features.completion) {
|
|
193
337
|
return [];
|
|
194
338
|
}
|
|
195
339
|
lastCompletionUri = params.textDocument.uri;
|
|
196
|
-
return
|
|
340
|
+
return safe(() => serviceFor(params.textDocument.uri).getCompletions(params.textDocument.uri, params.position, settings.suggest), []);
|
|
197
341
|
});
|
|
198
342
|
connection.onCompletionResolve((item) => {
|
|
199
|
-
if (!
|
|
343
|
+
if (!lastCompletionUri) {
|
|
200
344
|
return item;
|
|
201
345
|
}
|
|
202
346
|
// The service's CompletionItem mirrors the LSP one; the only shape
|
|
203
347
|
// difference is `kind` optionality, so the cast at this boundary is safe.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
348
|
+
return safe(() => {
|
|
349
|
+
const resolved = serviceFor(lastCompletionUri).resolveCompletion(lastCompletionUri, item);
|
|
350
|
+
return {
|
|
351
|
+
...item,
|
|
352
|
+
detail: resolved.detail,
|
|
353
|
+
documentation: resolved.documentation,
|
|
354
|
+
additionalTextEdits: resolved.additionalTextEdits
|
|
355
|
+
};
|
|
356
|
+
}, item);
|
|
211
357
|
});
|
|
212
358
|
connection.onHover((params) => {
|
|
213
|
-
if (!
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
const hover = service.getHover(params.textDocument.uri, params.position);
|
|
217
|
-
if (!hover) {
|
|
359
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.features.hover) {
|
|
218
360
|
return null;
|
|
219
361
|
}
|
|
220
|
-
return
|
|
362
|
+
return safe(() => {
|
|
363
|
+
const hover = serviceFor(params.textDocument.uri).getHover(params.textDocument.uri, params.position);
|
|
364
|
+
if (!hover) {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
return { contents: { kind: 'markdown', value: hover.contents }, range: hover.range };
|
|
368
|
+
}, null);
|
|
221
369
|
});
|
|
222
|
-
connection.onDefinition((params) =>
|
|
223
|
-
?
|
|
370
|
+
connection.onDefinition((params) => isAzeroth(params.textDocument.uri) && settings.features.definition
|
|
371
|
+
? safe(() => serviceFor(params.textDocument.uri).getDefinition(params.textDocument.uri, params.position), [])
|
|
224
372
|
: []);
|
|
225
|
-
connection.onTypeDefinition((params) =>
|
|
226
|
-
?
|
|
373
|
+
connection.onTypeDefinition((params) => isAzeroth(params.textDocument.uri) && settings.features.typeDefinition
|
|
374
|
+
? safe(() => serviceFor(params.textDocument.uri).getTypeDefinition(params.textDocument.uri, params.position), [])
|
|
227
375
|
: []);
|
|
228
|
-
connection.onReferences((params) =>
|
|
229
|
-
?
|
|
376
|
+
connection.onReferences((params) => isAzeroth(params.textDocument.uri) && settings.features.references
|
|
377
|
+
? safe(() => serviceFor(params.textDocument.uri).getReferences(params.textDocument.uri, params.position), [])
|
|
230
378
|
: []);
|
|
231
|
-
connection.onDocumentHighlight((params) =>
|
|
232
|
-
?
|
|
379
|
+
connection.onDocumentHighlight((params) => isAzeroth(params.textDocument.uri) && settings.features.documentHighlight
|
|
380
|
+
? safe(() => serviceFor(params.textDocument.uri).getDocumentHighlights(params.textDocument.uri, params.position), [])
|
|
233
381
|
: []);
|
|
234
|
-
|
|
235
|
-
|
|
382
|
+
// prepareRename shares the rename toggle: validating the target up-front is
|
|
383
|
+
// the first half of the same feature, so it gates behind features.rename.
|
|
384
|
+
connection.onPrepareRename((params) => isAzeroth(params.textDocument.uri) && settings.features.rename
|
|
385
|
+
? safe(() => serviceFor(params.textDocument.uri).getPrepareRename(params.textDocument.uri, params.position), null)
|
|
386
|
+
: null);
|
|
387
|
+
connection.onRenameRequest((params) => isAzeroth(params.textDocument.uri) && settings.features.rename
|
|
388
|
+
? safe(() => serviceFor(params.textDocument.uri).getRenameEdits(params.textDocument.uri, params.position, params.newName), null)
|
|
236
389
|
: null);
|
|
237
|
-
connection.onDocumentSymbol((params) =>
|
|
238
|
-
?
|
|
390
|
+
connection.onDocumentSymbol((params) => isAzeroth(params.textDocument.uri) && settings.features.documentSymbol
|
|
391
|
+
? safe(() => serviceFor(params.textDocument.uri).getDocumentSymbols(params.textDocument.uri), [])
|
|
239
392
|
: []);
|
|
240
|
-
connection.onWorkspaceSymbol((params) =>
|
|
241
|
-
|
|
242
|
-
|
|
393
|
+
connection.onWorkspaceSymbol((params) =>
|
|
394
|
+
// Workspace symbols span every root, so query each per-root service and
|
|
395
|
+
// merge - the one handler that isn't keyed to a single document.
|
|
396
|
+
settings.features.workspaceSymbol
|
|
397
|
+
? safe(() => [...services.values()].flatMap((s) => s.getWorkspaceSymbols(params.query)), [])
|
|
398
|
+
: []);
|
|
399
|
+
connection.onSignatureHelp((params) => isAzeroth(params.textDocument.uri) && settings.features.signatureHelp
|
|
400
|
+
? safe(() => serviceFor(params.textDocument.uri).getSignatureHelp(params.textDocument.uri, params.position), null)
|
|
243
401
|
: null);
|
|
244
|
-
connection.onFoldingRanges((params) =>
|
|
245
|
-
?
|
|
402
|
+
connection.onFoldingRanges((params) => isAzeroth(params.textDocument.uri) && settings.features.folding
|
|
403
|
+
? safe(() => serviceFor(params.textDocument.uri).getFoldingRanges(params.textDocument.uri), [])
|
|
246
404
|
: []);
|
|
247
405
|
connection.onCodeAction((params) => {
|
|
248
|
-
if (!
|
|
406
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.features.codeActions) {
|
|
249
407
|
return [];
|
|
250
408
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
409
|
+
return safe(() => {
|
|
410
|
+
const codes = params.context.diagnostics
|
|
411
|
+
.map(diagnostic => (typeof diagnostic.code === 'number' ? diagnostic.code : undefined))
|
|
412
|
+
.filter((code) => code !== undefined);
|
|
413
|
+
return serviceFor(params.textDocument.uri).getCodeActions(params.textDocument.uri, params.range, codes);
|
|
414
|
+
}, []);
|
|
255
415
|
});
|
|
256
|
-
connection.onDocumentFormatting((params) =>
|
|
257
|
-
?
|
|
416
|
+
connection.onDocumentFormatting((params) => isAzeroth(params.textDocument.uri) && settings.format.enable
|
|
417
|
+
? safe(() => serviceFor(params.textDocument.uri).getFormattingEdits(params.textDocument.uri), [])
|
|
258
418
|
: []);
|
|
259
|
-
connection.languages.inlayHint.on((params) =>
|
|
260
|
-
?
|
|
419
|
+
connection.languages.inlayHint.on((params) => isAzeroth(params.textDocument.uri)
|
|
420
|
+
? safe(() => serviceFor(params.textDocument.uri).getInlayHints(params.textDocument.uri, params.range, settings.inlayHints), [])
|
|
261
421
|
: []);
|
|
262
|
-
connection.onSelectionRanges((params) =>
|
|
263
|
-
?
|
|
422
|
+
connection.onSelectionRanges((params) => isAzeroth(params.textDocument.uri) && settings.features.selectionRange
|
|
423
|
+
? safe(() => serviceFor(params.textDocument.uri).getSelectionRanges(params.textDocument.uri, params.positions), params.positions.map(position => ({ range: { start: position, end: position } })))
|
|
264
424
|
: params.positions.map(position => ({ range: { start: position, end: position } })));
|
|
265
|
-
connection.onDocumentOnTypeFormatting((params) =>
|
|
266
|
-
?
|
|
425
|
+
connection.onDocumentOnTypeFormatting((params) => isAzeroth(params.textDocument.uri) && settings.format.enable && settings.features.onTypeFormatting
|
|
426
|
+
? safe(() => serviceFor(params.textDocument.uri).getOnTypeFormattingEdits(params.textDocument.uri, params.position, params.ch), [])
|
|
267
427
|
: []);
|
|
268
428
|
connection.languages.semanticTokens.on((params) => {
|
|
269
|
-
if (!
|
|
429
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.features.semanticTokens) {
|
|
270
430
|
return { data: [] };
|
|
271
431
|
}
|
|
272
|
-
return
|
|
432
|
+
return safe(() => serviceFor(params.textDocument.uri).getSemanticTokens(params.textDocument.uri), { data: [] });
|
|
273
433
|
});
|
|
274
434
|
connection.languages.onLinkedEditingRange((params) => {
|
|
275
|
-
if (!
|
|
435
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.features.linkedEditing) {
|
|
276
436
|
return null;
|
|
277
437
|
}
|
|
278
|
-
|
|
279
|
-
|
|
438
|
+
return safe(() => {
|
|
439
|
+
const ranges = serviceFor(params.textDocument.uri).getLinkedEditingRanges(params.textDocument.uri, params.position);
|
|
440
|
+
return ranges ? { ranges } : null;
|
|
441
|
+
}, null);
|
|
280
442
|
});
|
|
443
|
+
connection.languages.callHierarchy.onPrepare((params) => isAzeroth(params.textDocument.uri) && settings.features.callHierarchy
|
|
444
|
+
? safe(() => serviceFor(params.textDocument.uri).getCallHierarchyPrepare(params.textDocument.uri, params.position), null)
|
|
445
|
+
: null);
|
|
446
|
+
connection.languages.callHierarchy.onIncomingCalls((params) => {
|
|
447
|
+
// The follow-up requests carry only the prepared item (whose `data` holds
|
|
448
|
+
// the source URI), not a textDocument; route by that uri.
|
|
449
|
+
if (!settings.features.callHierarchy) {
|
|
450
|
+
return [];
|
|
451
|
+
}
|
|
452
|
+
const item = params.item;
|
|
453
|
+
const uri = item.data?.uri;
|
|
454
|
+
if (!uri || !isAzeroth(uri)) {
|
|
455
|
+
return [];
|
|
456
|
+
}
|
|
457
|
+
return safe(() => serviceFor(uri).getIncomingCalls(item), []);
|
|
458
|
+
});
|
|
459
|
+
connection.languages.callHierarchy.onOutgoingCalls((params) => {
|
|
460
|
+
if (!settings.features.callHierarchy) {
|
|
461
|
+
return [];
|
|
462
|
+
}
|
|
463
|
+
const item = params.item;
|
|
464
|
+
const uri = item.data?.uri;
|
|
465
|
+
if (!uri || !isAzeroth(uri)) {
|
|
466
|
+
return [];
|
|
467
|
+
}
|
|
468
|
+
return safe(() => serviceFor(uri).getOutgoingCalls(item), []);
|
|
469
|
+
});
|
|
470
|
+
connection.onCodeLens((params) => isAzeroth(params.textDocument.uri) && settings.features.codeLens
|
|
471
|
+
? safe(() => serviceFor(params.textDocument.uri).getCodeLenses(params.textDocument.uri), [])
|
|
472
|
+
: []);
|
|
473
|
+
connection.onCodeLensResolve((lens) => {
|
|
474
|
+
// The resolve request carries only the lens; its `data` holds the source
|
|
475
|
+
// URI (stashed by getCodeLenses), so route by that.
|
|
476
|
+
if (!settings.features.codeLens) {
|
|
477
|
+
return lens;
|
|
478
|
+
}
|
|
479
|
+
const uri = lens.data?.uri;
|
|
480
|
+
if (!uri || !isAzeroth(uri)) {
|
|
481
|
+
return lens;
|
|
482
|
+
}
|
|
483
|
+
return safe(() => serviceFor(uri).resolveCodeLens(uri, lens), lens);
|
|
484
|
+
});
|
|
485
|
+
connection.onDocumentLinks((params) => isAzeroth(params.textDocument.uri) && settings.features.documentLinks
|
|
486
|
+
? safe(() => serviceFor(params.textDocument.uri).getDocumentLinks(params.textDocument.uri), [])
|
|
487
|
+
: []);
|
|
488
|
+
connection.onDocumentColor((params) => isAzeroth(params.textDocument.uri) && settings.features.documentColor
|
|
489
|
+
? safe(() => serviceFor(params.textDocument.uri).getDocumentColors(params.textDocument.uri), [])
|
|
490
|
+
: []);
|
|
491
|
+
connection.onColorPresentation((params) => isAzeroth(params.textDocument.uri) && settings.features.documentColor
|
|
492
|
+
? safe(() => serviceFor(params.textDocument.uri).getColorPresentations(params.textDocument.uri, params.color, params.range), [])
|
|
493
|
+
: []);
|
|
281
494
|
// Custom request: the client calls this after the user types `>` so the
|
|
282
495
|
// editor can auto-close the opening tag (VS Code has no built-in tag close
|
|
283
496
|
// for custom languages). Returns a snippet string, or null.
|
|
284
497
|
connection.onRequest('azeroth/autoInsert', (params) => {
|
|
285
|
-
if (!
|
|
498
|
+
if (!isAzeroth(params.textDocument.uri) || !settings.autoClosingTags) {
|
|
286
499
|
return null;
|
|
287
500
|
}
|
|
288
|
-
return
|
|
501
|
+
return safe(() => serviceFor(params.textDocument.uri).getAutoCloseTag(params.textDocument.uri, params.position), null);
|
|
289
502
|
});
|
|
290
503
|
documents.listen(connection);
|
|
291
504
|
connection.listen();
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azerothjs/language-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-beta.1",
|
|
4
4
|
"description": "AzerothJS language server — a Language Server Protocol front-end for .azeroth files",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"bin":
|
|
10
10
|
{
|
|
11
11
|
"azeroth-language-server": "./dist/cli.js",
|
|
12
|
-
"azeroth-tsc": "./dist/tsc-cli.js"
|
|
12
|
+
"azeroth-tsc": "./dist/tsc-cli.js",
|
|
13
|
+
"azeroth-docgen": "./dist/docgen-cli.js"
|
|
13
14
|
},
|
|
14
15
|
"exports":
|
|
15
16
|
{
|
|
@@ -20,7 +21,8 @@
|
|
|
20
21
|
"default": "./dist/index.js"
|
|
21
22
|
},
|
|
22
23
|
"./cli": "./dist/cli.js",
|
|
23
|
-
"./tsc": "./dist/tsc.js"
|
|
24
|
+
"./tsc": "./dist/tsc.js",
|
|
25
|
+
"./docgen": "./dist/docgen-cli.js"
|
|
24
26
|
},
|
|
25
27
|
"files":
|
|
26
28
|
[
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
],
|
|
29
31
|
"dependencies":
|
|
30
32
|
{
|
|
31
|
-
"@azerothjs/language-service": "0.
|
|
33
|
+
"@azerothjs/language-service": "0.6.0-beta.1",
|
|
32
34
|
"typescript": ">=5",
|
|
33
35
|
"vscode-languageserver": "^9",
|
|
34
36
|
"vscode-languageserver-textdocument": "^1"
|