@coherent.js/tooling 1.1.2 → 2.0.0-rc.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 +9 -1
- package/dist/lsp/bin.d.ts +11 -0
- package/dist/lsp/bin.d.ts.map +1 -0
- package/dist/lsp/bin.js +12 -0
- package/dist/lsp/bin.js.map +1 -0
- package/dist/lsp/data/element-attributes.d.ts.map +1 -1
- package/dist/lsp/data/element-attributes.generated.json +1 -1
- package/dist/lsp/data/element-attributes.js +24 -33
- package/dist/lsp/data/element-attributes.js.map +1 -1
- package/dist/lsp/data/generated-data.d.ts +15 -0
- package/dist/lsp/data/generated-data.d.ts.map +1 -0
- package/dist/lsp/data/generated-data.js +22 -0
- package/dist/lsp/data/generated-data.js.map +1 -0
- package/dist/lsp/server.d.ts +18 -4
- package/dist/lsp/server.d.ts.map +1 -1
- package/dist/lsp/server.js +73 -61
- package/dist/lsp/server.js.map +1 -1
- package/dist/testing/index.js +199 -91
- package/dist/testing/index.js.map +2 -2
- package/dist/testing/matchers.js +188 -87
- package/dist/testing/matchers.js.map +2 -2
- package/dist/testing/test-renderer.js +9 -4
- package/dist/testing/test-renderer.js.map +2 -2
- package/dist/testing/test-utils.js +2 -0
- package/dist/testing/test-utils.js.map +2 -2
- package/package.json +8 -7
- package/types/testing/index.d.ts +59 -75
package/README.md
CHANGED
|
@@ -16,6 +16,12 @@ import { renderComponent } from '@coherent.js/tooling/testing';
|
|
|
16
16
|
// '@coherent.js/tooling/testing/matchers'
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
`extendExpect(expect)` registers matchers that read a `renderComponent()` result (`toHaveText`,
|
|
20
|
+
`toHaveClass`, `toHaveAttribute`, `toBeValidHTML`...). It leaves Vitest's built-in
|
|
21
|
+
`toMatchSnapshot` and `toHaveBeenCalled*` alone: snapshot with
|
|
22
|
+
`expect(result.toSnapshot()).toMatchSnapshot()`. See the
|
|
23
|
+
[testing guide](../../docs/testing/guide.md#custom-matchers).
|
|
24
|
+
|
|
19
25
|
These were previously published as `@coherent.js/testing`.
|
|
20
26
|
|
|
21
27
|
### Language Server
|
|
@@ -27,7 +33,9 @@ npm install -g @coherent.js/tooling
|
|
|
27
33
|
coherent-language-server --stdio
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
Configure your editor's LSP client to invoke `coherent-language-server` for JavaScript and TypeScript files.
|
|
36
|
+
Configure your editor's LSP client to invoke `coherent-language-server` for JavaScript and TypeScript files. The binary also accepts `--node-ipc` and `--socket=<port>`.
|
|
37
|
+
|
|
38
|
+
To embed the server, import `startServer` from `@coherent.js/tooling/lsp`; importing the module does nothing else. `startServer(connection?)` serves the given `vscode-languageserver` connection (by default one over the transport named on the command line) and returns `{ connection, documents }`.
|
|
31
39
|
|
|
32
40
|
These were previously published as `@coherent.js/language-server`.
|
|
33
41
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `coherent-language-server` executable.
|
|
4
|
+
*
|
|
5
|
+
* Starts the Coherent.js language server over the transport named on the
|
|
6
|
+
* command line (--stdio, --node-ipc or --socket=<port>). The library entry
|
|
7
|
+
* (`@coherent.js/tooling/lsp`, server.ts) has no side effects; this file is
|
|
8
|
+
* the only place that starts a connection on its own.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/lsp/bin.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
package/dist/lsp/bin.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `coherent-language-server` executable.
|
|
4
|
+
*
|
|
5
|
+
* Starts the Coherent.js language server over the transport named on the
|
|
6
|
+
* command line (--stdio, --node-ipc or --socket=<port>). The library entry
|
|
7
|
+
* (`@coherent.js/tooling/lsp`, server.ts) has no side effects; this file is
|
|
8
|
+
* the only place that starts a connection on its own.
|
|
9
|
+
*/
|
|
10
|
+
import { startServer } from './server.js';
|
|
11
|
+
startServer();
|
|
12
|
+
//# sourceMappingURL=bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/lsp/bin.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-attributes.d.ts","sourceRoot":"","sources":["../../../src/lsp/data/element-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"element-attributes.d.ts","sourceRoot":"","sources":["../../../src/lsp/data/element-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AA2BD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,CAqBpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,CAA8B,CAAC;AAYrE;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAkDxE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAahF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,MAAM,EAAE,CA4BhG;AAoCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI3F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwB7D"}
|
|
@@ -7,40 +7,31 @@
|
|
|
7
7
|
* The data is extracted at build time from packages/core/types/elements.d.ts
|
|
8
8
|
* to maintain a single source of truth for element definitions.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
// Use createRequire to import JSON in ESM
|
|
12
|
-
const require = createRequire(import.meta.url);
|
|
10
|
+
import { loadGeneratedData } from './generated-data.js';
|
|
13
11
|
// Load generated data or use fallback
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
{ name: 'onClick', type: 'string | ((event: MouseEvent) => void)', optional: true },
|
|
38
|
-
{ name: 'onChange', type: 'string | ((event: Event) => void)', optional: true },
|
|
39
|
-
{ name: 'onSubmit', type: 'string | ((event: SubmitEvent) => void)', optional: true },
|
|
40
|
-
],
|
|
41
|
-
generatedAt: 'fallback',
|
|
42
|
-
};
|
|
43
|
-
}
|
|
12
|
+
const data = loadGeneratedData() ?? {
|
|
13
|
+
elements: {},
|
|
14
|
+
voidElements: ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'],
|
|
15
|
+
globalAttributes: [
|
|
16
|
+
{ name: 'id', type: 'string', optional: true },
|
|
17
|
+
{ name: 'className', type: 'string', optional: true },
|
|
18
|
+
{ name: 'class', type: 'string', optional: true },
|
|
19
|
+
{ name: 'style', type: 'string | Record<string, string | number>', optional: true },
|
|
20
|
+
{ name: 'title', type: 'string', optional: true },
|
|
21
|
+
{ name: 'hidden', type: 'boolean', optional: true },
|
|
22
|
+
{ name: 'tabIndex', type: 'number', optional: true },
|
|
23
|
+
{ name: 'key', type: 'string | number', optional: true },
|
|
24
|
+
{ name: 'text', type: 'string | number', optional: true },
|
|
25
|
+
{ name: 'html', type: 'string', optional: true },
|
|
26
|
+
{ name: 'children', type: 'CoherentChild | CoherentChild[]', optional: true },
|
|
27
|
+
],
|
|
28
|
+
eventHandlers: [
|
|
29
|
+
{ name: 'onClick', type: 'string | ((event: MouseEvent) => void)', optional: true },
|
|
30
|
+
{ name: 'onChange', type: 'string | ((event: Event) => void)', optional: true },
|
|
31
|
+
{ name: 'onSubmit', type: 'string | ((event: SubmitEvent) => void)', optional: true },
|
|
32
|
+
],
|
|
33
|
+
generatedAt: 'fallback',
|
|
34
|
+
};
|
|
44
35
|
/**
|
|
45
36
|
* Set of all valid HTML element tag names.
|
|
46
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-attributes.js","sourceRoot":"","sources":["../../../src/lsp/data/element-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"element-attributes.js","sourceRoot":"","sources":["../../../src/lsp/data/element-attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads the element data extracted at build time from
|
|
3
|
+
* packages/core/types/elements.d.ts (scripts/extract-attributes.ts).
|
|
4
|
+
*
|
|
5
|
+
* Kept in its own module so a bundler can swap it for one with the data
|
|
6
|
+
* inlined: the VS Code extension bundles the server into a single file,
|
|
7
|
+
* with no JSON file next to it at runtime.
|
|
8
|
+
*/
|
|
9
|
+
import type { ExtractedData } from './element-attributes.js';
|
|
10
|
+
/**
|
|
11
|
+
* @returns The generated data, or null when it has not been generated
|
|
12
|
+
* (a development checkout before the first build).
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadGeneratedData(): ExtractedData | null;
|
|
15
|
+
//# sourceMappingURL=generated-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-data.d.ts","sourceRoot":"","sources":["../../../src/lsp/data/generated-data.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAMxD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads the element data extracted at build time from
|
|
3
|
+
* packages/core/types/elements.d.ts (scripts/extract-attributes.ts).
|
|
4
|
+
*
|
|
5
|
+
* Kept in its own module so a bundler can swap it for one with the data
|
|
6
|
+
* inlined: the VS Code extension bundles the server into a single file,
|
|
7
|
+
* with no JSON file next to it at runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { createRequire } from 'module';
|
|
10
|
+
/**
|
|
11
|
+
* @returns The generated data, or null when it has not been generated
|
|
12
|
+
* (a development checkout before the first build).
|
|
13
|
+
*/
|
|
14
|
+
export function loadGeneratedData() {
|
|
15
|
+
try {
|
|
16
|
+
return createRequire(import.meta.url)('./element-attributes.generated.json');
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=generated-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-data.js","sourceRoot":"","sources":["../../../src/lsp/data/generated-data.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,qCAAqC,CAAkB,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/lsp/server.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
/**
|
|
3
2
|
* Coherent.js Language Server
|
|
4
3
|
*
|
|
@@ -8,10 +7,25 @@
|
|
|
8
7
|
* - Hover documentation for elements and attributes
|
|
9
8
|
* - Quick fix code actions for common issues
|
|
10
9
|
*
|
|
10
|
+
* Importing this module has no side effects: call {@link startServer} to
|
|
11
|
+
* serve a connection. The `coherent-language-server` binary (bin.ts) does
|
|
12
|
+
* that over the transport named on its command line (--stdio, --node-ipc,
|
|
13
|
+
* --socket=<port>).
|
|
14
|
+
*
|
|
11
15
|
* @see https://microsoft.github.io/language-server-protocol/
|
|
12
16
|
*/
|
|
13
|
-
import { TextDocuments } from 'vscode-languageserver/node';
|
|
17
|
+
import { TextDocuments, type Connection } from 'vscode-languageserver/node';
|
|
14
18
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
15
|
-
export
|
|
16
|
-
|
|
19
|
+
export interface LanguageServer {
|
|
20
|
+
connection: Connection;
|
|
21
|
+
documents: TextDocuments<TextDocument>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Serve the Coherent.js language server on `connection` and start
|
|
25
|
+
* listening.
|
|
26
|
+
*
|
|
27
|
+
* @param connection - Defaults to a connection over the transport given on
|
|
28
|
+
* the process command line (--stdio, --node-ipc, --socket=<port>).
|
|
29
|
+
*/
|
|
30
|
+
export declare function startServer(connection?: Connection): LanguageServer;
|
|
17
31
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/lsp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,aAAa,EAOb,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAQlE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,GAAE,UAAmD,GAC9D,cAAc,CAmFhB"}
|
package/dist/lsp/server.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
/**
|
|
3
2
|
* Coherent.js Language Server
|
|
4
3
|
*
|
|
@@ -8,6 +7,11 @@
|
|
|
8
7
|
* - Hover documentation for elements and attributes
|
|
9
8
|
* - Quick fix code actions for common issues
|
|
10
9
|
*
|
|
10
|
+
* Importing this module has no side effects: call {@link startServer} to
|
|
11
|
+
* serve a connection. The `coherent-language-server` binary (bin.ts) does
|
|
12
|
+
* that over the transport named on its command line (--stdio, --node-ipc,
|
|
13
|
+
* --socket=<port>).
|
|
14
|
+
*
|
|
11
15
|
* @see https://microsoft.github.io/language-server-protocol/
|
|
12
16
|
*/
|
|
13
17
|
import { createConnection, TextDocuments, ProposedFeatures, TextDocumentSyncKind, CodeActionKind, DidChangeConfigurationNotification, } from 'vscode-languageserver/node';
|
|
@@ -17,66 +21,74 @@ import { registerDiagnosticProvider } from './providers/diagnostics.js';
|
|
|
17
21
|
import { registerCompletionProvider } from './providers/completion.js';
|
|
18
22
|
import { registerHoverProvider } from './providers/hover.js';
|
|
19
23
|
import { registerCodeActionProvider } from './providers/code-actions.js';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
connection.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
supported: true,
|
|
24
|
+
/**
|
|
25
|
+
* Serve the Coherent.js language server on `connection` and start
|
|
26
|
+
* listening.
|
|
27
|
+
*
|
|
28
|
+
* @param connection - Defaults to a connection over the transport given on
|
|
29
|
+
* the process command line (--stdio, --node-ipc, --socket=<port>).
|
|
30
|
+
*/
|
|
31
|
+
export function startServer(connection = createConnection(ProposedFeatures.all)) {
|
|
32
|
+
// Text document manager for syncing documents
|
|
33
|
+
const documents = new TextDocuments(TextDocument);
|
|
34
|
+
// Server capabilities
|
|
35
|
+
let hasConfigurationCapability = false;
|
|
36
|
+
let hasWorkspaceFolderCapability = false;
|
|
37
|
+
connection.onInitialize((params) => {
|
|
38
|
+
const capabilities = params.capabilities;
|
|
39
|
+
// Check client capabilities
|
|
40
|
+
hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration);
|
|
41
|
+
hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders);
|
|
42
|
+
const result = {
|
|
43
|
+
capabilities: {
|
|
44
|
+
// Incremental document sync for performance
|
|
45
|
+
textDocumentSync: TextDocumentSyncKind.Incremental,
|
|
46
|
+
// Autocomplete provider
|
|
47
|
+
completionProvider: {
|
|
48
|
+
resolveProvider: true,
|
|
49
|
+
triggerCharacters: ['{', ':', '"', "'"],
|
|
50
|
+
},
|
|
51
|
+
// Hover provider for documentation
|
|
52
|
+
hoverProvider: true,
|
|
53
|
+
// Code action provider for quick fixes
|
|
54
|
+
codeActionProvider: {
|
|
55
|
+
codeActionKinds: [CodeActionKind.QuickFix],
|
|
56
|
+
},
|
|
54
57
|
},
|
|
55
58
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
connection
|
|
59
|
+
// Add workspace folder support if available
|
|
60
|
+
if (hasWorkspaceFolderCapability) {
|
|
61
|
+
result.capabilities.workspace = {
|
|
62
|
+
workspaceFolders: {
|
|
63
|
+
supported: true,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Log capabilities for debugging
|
|
68
|
+
console.error('[coherent-lsp] Initialized with capabilities:', JSON.stringify(result.capabilities, null, 2));
|
|
69
|
+
return result;
|
|
70
|
+
});
|
|
71
|
+
connection.onInitialized(() => {
|
|
72
|
+
if (hasConfigurationCapability) {
|
|
73
|
+
// Register for configuration changes
|
|
74
|
+
connection.client.register(DidChangeConfigurationNotification.type, undefined);
|
|
75
|
+
}
|
|
76
|
+
if (hasWorkspaceFolderCapability) {
|
|
77
|
+
connection.workspace.onDidChangeWorkspaceFolders((_event) => {
|
|
78
|
+
console.error('[coherent-lsp] Workspace folder change event received');
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Register providers
|
|
82
|
+
registerDiagnosticProvider(connection, documents);
|
|
83
|
+
registerCompletionProvider(connection, documents);
|
|
84
|
+
registerHoverProvider(connection, documents);
|
|
85
|
+
registerCodeActionProvider(connection, documents);
|
|
86
|
+
console.error('[coherent-lsp] Server initialized successfully');
|
|
87
|
+
});
|
|
88
|
+
// Start listening for document events
|
|
89
|
+
documents.listen(connection);
|
|
90
|
+
// Start the connection
|
|
91
|
+
connection.listen();
|
|
92
|
+
return { connection, documents };
|
|
93
|
+
}
|
|
82
94
|
//# sourceMappingURL=server.js.map
|
package/dist/lsp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"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"}
|