jj-language-server 0.2.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/LICENSE +191 -0
- package/README.md +170 -0
- package/lib/cli.d.ts +2 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/cli.mjs +3 -0
- package/lib/cli.mjs.map +1 -0
- package/lib/diagnostics.d.ts +7 -0
- package/lib/diagnostics.d.ts.map +1 -0
- package/lib/features/call-hierarchy.d.ts +11 -0
- package/lib/features/call-hierarchy.d.ts.map +1 -0
- package/lib/features/code-actions.d.ts +10 -0
- package/lib/features/code-actions.d.ts.map +1 -0
- package/lib/features/code-lens.d.ts +8 -0
- package/lib/features/code-lens.d.ts.map +1 -0
- package/lib/features/completion.d.ts +8 -0
- package/lib/features/completion.d.ts.map +1 -0
- package/lib/features/document-links.d.ts +6 -0
- package/lib/features/document-links.d.ts.map +1 -0
- package/lib/features/document-symbols.d.ts +7 -0
- package/lib/features/document-symbols.d.ts.map +1 -0
- package/lib/features/folding-ranges.d.ts +9 -0
- package/lib/features/folding-ranges.d.ts.map +1 -0
- package/lib/features/formatting.d.ts +13 -0
- package/lib/features/formatting.d.ts.map +1 -0
- package/lib/features/hover.d.ts +8 -0
- package/lib/features/hover.d.ts.map +1 -0
- package/lib/features/inlay-hints.d.ts +8 -0
- package/lib/features/inlay-hints.d.ts.map +1 -0
- package/lib/features/linked-editing.d.ts +10 -0
- package/lib/features/linked-editing.d.ts.map +1 -0
- package/lib/features/navigation.d.ts +35 -0
- package/lib/features/navigation.d.ts.map +1 -0
- package/lib/features/on-type-formatting.d.ts +7 -0
- package/lib/features/on-type-formatting.d.ts.map +1 -0
- package/lib/features/organize-imports.d.ts +6 -0
- package/lib/features/organize-imports.d.ts.map +1 -0
- package/lib/features/refactoring.d.ts +31 -0
- package/lib/features/refactoring.d.ts.map +1 -0
- package/lib/features/selection-range.d.ts +9 -0
- package/lib/features/selection-range.d.ts.map +1 -0
- package/lib/features/semantic-diagnostics.d.ts +14 -0
- package/lib/features/semantic-diagnostics.d.ts.map +1 -0
- package/lib/features/semantic-tokens.d.ts +12 -0
- package/lib/features/semantic-tokens.d.ts.map +1 -0
- package/lib/features/signature-help.d.ts +7 -0
- package/lib/features/signature-help.d.ts.map +1 -0
- package/lib/features/source-generation.d.ts +7 -0
- package/lib/features/source-generation.d.ts.map +1 -0
- package/lib/features/token-utils.d.ts +6 -0
- package/lib/features/token-utils.d.ts.map +1 -0
- package/lib/features/type-hierarchy.d.ts +7 -0
- package/lib/features/type-hierarchy.d.ts.map +1 -0
- package/lib/java/annotation-processor.d.ts +57 -0
- package/lib/java/annotation-processor.d.ts.map +1 -0
- package/lib/java/class-file-reader.d.ts +57 -0
- package/lib/java/class-file-reader.d.ts.map +1 -0
- package/lib/java/cst-utils.d.ts +33 -0
- package/lib/java/cst-utils.d.ts.map +1 -0
- package/lib/java/expression-type-resolver.d.ts +24 -0
- package/lib/java/expression-type-resolver.d.ts.map +1 -0
- package/lib/java/import-resolver.d.ts +40 -0
- package/lib/java/import-resolver.d.ts.map +1 -0
- package/lib/java/javadoc.d.ts +41 -0
- package/lib/java/javadoc.d.ts.map +1 -0
- package/lib/java/parser.d.ts +13 -0
- package/lib/java/parser.d.ts.map +1 -0
- package/lib/java/scope-resolver.d.ts +20 -0
- package/lib/java/scope-resolver.d.ts.map +1 -0
- package/lib/java/symbol-table.d.ts +43 -0
- package/lib/java/symbol-table.d.ts.map +1 -0
- package/lib/java/type-resolver.d.ts +73 -0
- package/lib/java/type-resolver.d.ts.map +1 -0
- package/lib/lsp-client.d.ts +14 -0
- package/lib/lsp-client.d.ts.map +1 -0
- package/lib/lsp-connection.d.ts +6 -0
- package/lib/lsp-connection.d.ts.map +1 -0
- package/lib/lsp-server.d.ts +87 -0
- package/lib/lsp-server.d.ts.map +1 -0
- package/lib/project/classpath-resolver.d.ts +80 -0
- package/lib/project/classpath-resolver.d.ts.map +1 -0
- package/lib/project/document-cache.d.ts +58 -0
- package/lib/project/document-cache.d.ts.map +1 -0
- package/lib/project/gradle.d.ts +32 -0
- package/lib/project/gradle.d.ts.map +1 -0
- package/lib/project/jar-index.d.ts +71 -0
- package/lib/project/jar-index.d.ts.map +1 -0
- package/lib/project/jdk-model.d.ts +39 -0
- package/lib/project/jdk-model.d.ts.map +1 -0
- package/lib/project/maven.d.ts +37 -0
- package/lib/project/maven.d.ts.map +1 -0
- package/lib/project/multi-root.d.ts +52 -0
- package/lib/project/multi-root.d.ts.map +1 -0
- package/lib/project/source-jar.d.ts +62 -0
- package/lib/project/source-jar.d.ts.map +1 -0
- package/lib/project/workspace-index.d.ts +67 -0
- package/lib/project/workspace-index.d.ts.map +1 -0
- package/lib/utils/logger.d.ts +18 -0
- package/lib/utils/logger.d.ts.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jar-index.d.ts","sourceRoot":"","sources":["../../src/project/jar-index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,SAAS,EAAE,aAAa,CAAC;CAC5B;AAYD,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAmBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CA2CvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA8BxE;AAmBD,qBAAa,QAAQ;IACjB,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACG,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1E;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4CzE;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxD;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE;IAIxD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,WAAW,EAAE;IAkBrD;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE;IAUrD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-built index of commonly used JDK standard library types.
|
|
3
|
+
* Provides type information for completion, hover, and navigation
|
|
4
|
+
* without requiring a JDK installation.
|
|
5
|
+
*/
|
|
6
|
+
export interface JdkType {
|
|
7
|
+
name: string;
|
|
8
|
+
qualifiedName: string;
|
|
9
|
+
kind: 'class' | 'interface' | 'enum' | 'annotation';
|
|
10
|
+
package: string;
|
|
11
|
+
methods: JdkMethod[];
|
|
12
|
+
fields: JdkField[];
|
|
13
|
+
superclass?: string;
|
|
14
|
+
interfaces?: string[];
|
|
15
|
+
typeParameters?: string[];
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface JdkMethod {
|
|
19
|
+
name: string;
|
|
20
|
+
returnType: string;
|
|
21
|
+
parameters: {
|
|
22
|
+
name: string;
|
|
23
|
+
type: string;
|
|
24
|
+
}[];
|
|
25
|
+
isStatic: boolean;
|
|
26
|
+
description?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface JdkField {
|
|
29
|
+
name: string;
|
|
30
|
+
type: string;
|
|
31
|
+
isStatic: boolean;
|
|
32
|
+
isFinal: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function getJdkType(name: string): JdkType | undefined;
|
|
35
|
+
export declare function getJdkTypesByPackage(pkg: string): JdkType[];
|
|
36
|
+
export declare function getAllJdkTypes(): JdkType[];
|
|
37
|
+
export declare function getAutoImportedTypes(): JdkType[];
|
|
38
|
+
export declare function getCommonImportableTypes(): JdkType[];
|
|
39
|
+
//# sourceMappingURL=jdk-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jdk-model.d.ts","sourceRoot":"","sources":["../../src/project/jdk-model.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CACpB;AAieD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAE3D;AAED,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAE1C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,EAAE,CAEhD;AAED,wBAAgB,wBAAwB,IAAI,OAAO,EAAE,CAEpD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Logger } from '../utils/logger.js';
|
|
2
|
+
export interface MavenProject {
|
|
3
|
+
groupId: string;
|
|
4
|
+
artifactId: string;
|
|
5
|
+
version: string;
|
|
6
|
+
packaging: string;
|
|
7
|
+
javaVersion?: string;
|
|
8
|
+
sourceDirectory: string;
|
|
9
|
+
testSourceDirectory: string;
|
|
10
|
+
dependencies: MavenDependency[];
|
|
11
|
+
modules: string[];
|
|
12
|
+
parentPomPath?: string;
|
|
13
|
+
managedDependencies: MavenDependency[];
|
|
14
|
+
repositories: MavenRepository[];
|
|
15
|
+
}
|
|
16
|
+
export interface MavenDependency {
|
|
17
|
+
groupId: string;
|
|
18
|
+
artifactId: string;
|
|
19
|
+
version?: string;
|
|
20
|
+
scope?: string;
|
|
21
|
+
optional?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface MavenRepository {
|
|
24
|
+
id: string;
|
|
25
|
+
url: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a pom.xml file and extract project metadata.
|
|
30
|
+
*/
|
|
31
|
+
export declare function parsePomXml(pomPath: string, logger: Logger): Promise<MavenProject | null>;
|
|
32
|
+
export declare function parsePomContent(content: string, pomPath: string, logger: Logger): MavenProject | null;
|
|
33
|
+
/**
|
|
34
|
+
* Find pom.xml files in a directory tree.
|
|
35
|
+
*/
|
|
36
|
+
export declare function findPomFiles(rootDir: string): Promise<string[]>;
|
|
37
|
+
//# sourceMappingURL=maven.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maven.d.ts","sourceRoot":"","sources":["../../src/project/maven.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACvC,YAAY,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AASD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQ/F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiHrG;AA6CD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBrE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { WorkspaceFolder } from 'vscode-languageserver';
|
|
2
|
+
import { WorkspaceIndex, type WorkspaceSymbolEntry } from './workspace-index.js';
|
|
3
|
+
import type { Logger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Multi-root workspace manager that tracks multiple workspace folders,
|
|
6
|
+
* each with its own WorkspaceIndex.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MultiRootWorkspace {
|
|
9
|
+
private roots;
|
|
10
|
+
private logger;
|
|
11
|
+
constructor(logger: Logger);
|
|
12
|
+
/**
|
|
13
|
+
* Initialize with workspace folders.
|
|
14
|
+
*/
|
|
15
|
+
initialize(folders: WorkspaceFolder[]): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Add a workspace folder.
|
|
18
|
+
*/
|
|
19
|
+
addFolder(folder: WorkspaceFolder): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Remove a workspace folder.
|
|
22
|
+
*/
|
|
23
|
+
removeFolder(folderUri: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get the WorkspaceIndex for a given file URI by finding the longest
|
|
26
|
+
* matching workspace folder prefix.
|
|
27
|
+
*/
|
|
28
|
+
getIndexForFile(fileUri: string): WorkspaceIndex | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Get all workspace indexes.
|
|
31
|
+
*/
|
|
32
|
+
getAllIndexes(): WorkspaceIndex[];
|
|
33
|
+
/**
|
|
34
|
+
* Search symbols across all workspaces.
|
|
35
|
+
*/
|
|
36
|
+
searchSymbols(query: string): Array<{
|
|
37
|
+
entry: WorkspaceSymbolEntry;
|
|
38
|
+
workspaceFolder: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Find type by name across all workspaces. Returns the first match.
|
|
42
|
+
*/
|
|
43
|
+
findTypeByName(name: string): {
|
|
44
|
+
entry: WorkspaceSymbolEntry;
|
|
45
|
+
workspaceFolder: string;
|
|
46
|
+
} | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Get all workspace folders.
|
|
49
|
+
*/
|
|
50
|
+
getFolders(): WorkspaceFolder[];
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=multi-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-root.d.ts","sourceRoot":"","sources":["../../src/project/multi-root.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,KAAK,CAA8E;IAC3F,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMrC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAc5D;;OAEG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,oBAAoB,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAa7F;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,oBAAoB,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAUlG;;OAEG;IACH,UAAU,IAAI,eAAe,EAAE;CAGlC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Logger } from '../utils/logger.js';
|
|
2
|
+
import type { ParseResult } from '../java/parser.js';
|
|
3
|
+
import type { SymbolTable } from '../java/symbol-table.js';
|
|
4
|
+
export interface SourceEntry {
|
|
5
|
+
qualifiedName: string;
|
|
6
|
+
sourceText: string;
|
|
7
|
+
parseResult: ParseResult;
|
|
8
|
+
symbolTable: SymbolTable;
|
|
9
|
+
}
|
|
10
|
+
export interface SourceJarInfo {
|
|
11
|
+
jarPath: string;
|
|
12
|
+
groupId: string;
|
|
13
|
+
artifactId: string;
|
|
14
|
+
version: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages source JAR extraction, parsing, and caching for go-to-definition
|
|
18
|
+
* into dependency sources.
|
|
19
|
+
*/
|
|
20
|
+
export declare class SourceJarCache {
|
|
21
|
+
private cache;
|
|
22
|
+
private jarPaths;
|
|
23
|
+
private logger;
|
|
24
|
+
private loadedJars;
|
|
25
|
+
constructor(logger: Logger);
|
|
26
|
+
/**
|
|
27
|
+
* Register source JARs from resolved classpath.
|
|
28
|
+
* This just stores the JAR paths; actual extraction is lazy (on demand).
|
|
29
|
+
*/
|
|
30
|
+
registerSourceJars(jars: SourceJarInfo[]): void;
|
|
31
|
+
/**
|
|
32
|
+
* Find source for a fully qualified type name.
|
|
33
|
+
* Returns the parsed source entry, or undefined if not available.
|
|
34
|
+
* Lazy-loads from source JAR on first access.
|
|
35
|
+
*/
|
|
36
|
+
findSource(qualifiedName: string): Promise<SourceEntry | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Eagerly index an entire source JAR (extract and parse all .java files).
|
|
39
|
+
* Useful for preloading commonly-used dependencies.
|
|
40
|
+
*/
|
|
41
|
+
indexSourceJar(jarPath: string): Promise<number>;
|
|
42
|
+
/**
|
|
43
|
+
* Extract a single file from a JAR.
|
|
44
|
+
*/
|
|
45
|
+
private extractFromJar;
|
|
46
|
+
/**
|
|
47
|
+
* Create a virtual URI for a source JAR entry.
|
|
48
|
+
* Format: jj-source-jar:///path/to/Class.java
|
|
49
|
+
*/
|
|
50
|
+
static createVirtualUri(qualifiedName: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Check if a URI is a virtual source JAR URI.
|
|
53
|
+
*/
|
|
54
|
+
static isVirtualUri(uri: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Extract the qualified name from a virtual URI.
|
|
57
|
+
*/
|
|
58
|
+
static qualifiedNameFromUri(uri: string): string;
|
|
59
|
+
get size(): number;
|
|
60
|
+
clear(): void;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=source-jar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-jar.d.ts","sourceRoot":"","sources":["../../src/project/source-jar.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAK3D,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAA0B;gBAEhC,MAAM,EAAE,MAAM;IAI1B;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI;IAS/C;;;;OAIG;IACG,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAoBzE;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CtD;;OAEG;YACW,cAAc;IAwB5B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAKtD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type ParseResult } from '../java/parser.js';
|
|
2
|
+
import { type SymbolTable, type JavaSymbol } from '../java/symbol-table.js';
|
|
3
|
+
import type { Logger } from '../utils/logger.js';
|
|
4
|
+
export interface IndexedFile {
|
|
5
|
+
uri: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
parseResult?: ParseResult;
|
|
8
|
+
symbolTable?: SymbolTable;
|
|
9
|
+
lastModified: number;
|
|
10
|
+
}
|
|
11
|
+
export interface WorkspaceSymbolEntry {
|
|
12
|
+
name: string;
|
|
13
|
+
kind: JavaSymbol['kind'];
|
|
14
|
+
uri: string;
|
|
15
|
+
line: number;
|
|
16
|
+
column: number;
|
|
17
|
+
containerName?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Manages workspace-level Java file indexing and cross-file symbol resolution.
|
|
21
|
+
*/
|
|
22
|
+
export declare class WorkspaceIndex {
|
|
23
|
+
private files;
|
|
24
|
+
private globalSymbols;
|
|
25
|
+
private logger;
|
|
26
|
+
constructor(logger: Logger);
|
|
27
|
+
/**
|
|
28
|
+
* Initialize the workspace index by scanning for Java files.
|
|
29
|
+
*/
|
|
30
|
+
initialize(rootUri: string | null | undefined): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Update index for a single file (on open/change).
|
|
33
|
+
*/
|
|
34
|
+
updateFile(uri: string, parseResult: ParseResult, symbolTable: SymbolTable): void;
|
|
35
|
+
/**
|
|
36
|
+
* Remove a file from the index (on close/delete).
|
|
37
|
+
*/
|
|
38
|
+
removeFile(uri: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Search for symbols across the workspace.
|
|
41
|
+
*/
|
|
42
|
+
searchSymbols(query: string): WorkspaceSymbolEntry[];
|
|
43
|
+
/**
|
|
44
|
+
* Find a type declaration by name across all files.
|
|
45
|
+
*/
|
|
46
|
+
findTypeByName(name: string): WorkspaceSymbolEntry | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Find all declarations of a given name across all files.
|
|
49
|
+
*/
|
|
50
|
+
findDeclarationsByName(name: string): WorkspaceSymbolEntry[];
|
|
51
|
+
/**
|
|
52
|
+
* Get the symbol table for a specific file.
|
|
53
|
+
*/
|
|
54
|
+
getSymbolTable(uri: string): SymbolTable | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Get the parse result for a specific file.
|
|
57
|
+
*/
|
|
58
|
+
getParseResult(uri: string): ParseResult | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Get all indexed file URIs.
|
|
61
|
+
*/
|
|
62
|
+
getFileUris(): string[];
|
|
63
|
+
private findJavaFiles;
|
|
64
|
+
private indexFile;
|
|
65
|
+
private rebuildGlobalSymbols;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=workspace-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-index.d.ts","sourceRoot":"","sources":["../../src/project/workspace-index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnE;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAYjF;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EAAE;IASpD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAM9D;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAI5D;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;YAMT,aAAa;YAiCb,SAAS;IAuBvB,OAAO,CAAC,oBAAoB;CAoB/B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import lsp from 'vscode-languageserver';
|
|
2
|
+
import type { LspClient } from '../lsp-client.js';
|
|
3
|
+
export interface Logger {
|
|
4
|
+
error(message: string): void;
|
|
5
|
+
warn(message: string): void;
|
|
6
|
+
info(message: string): void;
|
|
7
|
+
log(message: string): void;
|
|
8
|
+
}
|
|
9
|
+
export declare class LspClientLogger implements Logger {
|
|
10
|
+
private client;
|
|
11
|
+
private level;
|
|
12
|
+
constructor(client: LspClient, level: lsp.MessageType);
|
|
13
|
+
error(message: string): void;
|
|
14
|
+
warn(message: string): void;
|
|
15
|
+
info(message: string): void;
|
|
16
|
+
log(message: string): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAQA,OAAO,GAAG,MAAM,uBAAuB,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,MAAM;IACnB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,qBAAa,eAAgB,YAAW,MAAM;IAC1C,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW;IAKrD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAK7B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jj-language-server",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Java Language Server implemented in TypeScript/JavaScript (no JVM required)",
|
|
5
|
+
"author": "Julien Dubois",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/jdubois/jj-language-server.git"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=20"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"lib"
|
|
17
|
+
],
|
|
18
|
+
"bin": {
|
|
19
|
+
"jj-language-server": "./lib/cli.mjs"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "rimraf lib && rollup --config rollup.config.mjs",
|
|
23
|
+
"dev": "rimraf lib && rollup --config rollup.config.mjs --watch",
|
|
24
|
+
"clean": "rimraf lib *.tsbuildinfo",
|
|
25
|
+
"test": "vitest",
|
|
26
|
+
"test:run": "vitest run",
|
|
27
|
+
"lint": "eslint src",
|
|
28
|
+
"fix": "eslint --fix src",
|
|
29
|
+
"benchmark": "node benchmarks/lsp-benchmark.mjs",
|
|
30
|
+
"benchmark:jj": "node benchmarks/lsp-benchmark.mjs --jj-only"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@rollup/plugin-commonjs": "^29.0.2",
|
|
34
|
+
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
35
|
+
"@rollup/plugin-terser": "^1.0.0",
|
|
36
|
+
"@rollup/plugin-typescript": "^12.0.0",
|
|
37
|
+
"@types/node": "^25.5.0",
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
|
39
|
+
"@typescript-eslint/parser": "^8.57.0",
|
|
40
|
+
"commander": "^14.0.0",
|
|
41
|
+
"eslint": "^10.0.3",
|
|
42
|
+
"fast-xml-parser": "^5.5.4",
|
|
43
|
+
"java-parser": "^3.0.1",
|
|
44
|
+
"prettier": "^3.8.1",
|
|
45
|
+
"prettier-plugin-java": "^2.8.1",
|
|
46
|
+
"rimraf": "^6.0.0",
|
|
47
|
+
"rollup": "^4.0.0",
|
|
48
|
+
"tslib": "^2.8.1",
|
|
49
|
+
"typescript": "^5.0.0",
|
|
50
|
+
"typescript-eslint": "^8.57.0",
|
|
51
|
+
"vitest": "^4.0.0",
|
|
52
|
+
"vscode-languageserver": "^9.0.1",
|
|
53
|
+
"vscode-languageserver-protocol": "^3.17.5",
|
|
54
|
+
"vscode-languageserver-textdocument": "^1.0.12",
|
|
55
|
+
"vscode-uri": "^3.1.0"
|
|
56
|
+
}
|
|
57
|
+
}
|