@azerothjs/language-service 0.4.0-beta.2 → 0.5.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/dist/mapping.d.ts +9 -0
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +20 -0
- package/dist/mapping.js.map +1 -1
- package/dist/providers/completion.d.ts.map +1 -1
- package/dist/providers/completion.js +43 -1
- package/dist/providers/completion.js.map +1 -1
- package/dist/providers/css-service.d.ts +6 -0
- package/dist/providers/css-service.d.ts.map +1 -1
- package/dist/providers/css-service.js +87 -9
- package/dist/providers/css-service.js.map +1 -1
- package/dist/providers/diagnostics.d.ts.map +1 -1
- package/dist/providers/diagnostics.js +57 -13
- package/dist/providers/diagnostics.js.map +1 -1
- package/dist/providers/hover.d.ts.map +1 -1
- package/dist/providers/hover.js +6 -1
- package/dist/providers/hover.js.map +1 -1
- package/dist/service.d.ts +22 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +51 -2
- package/dist/service.js.map +1 -1
- package/dist/ts-project.d.ts +50 -2
- package/dist/ts-project.d.ts.map +1 -1
- package/dist/ts-project.js +152 -22
- package/dist/ts-project.js.map +1 -1
- package/dist/virtual-code.d.ts.map +1 -1
- package/dist/virtual-code.js +16 -1
- package/dist/virtual-code.js.map +1 -1
- package/package.json +2 -2
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
// module + mapping) and hands it to the focused providers, which do the real
|
|
6
6
|
// work. The `@azerothjs/language-server` adapter is a thin translation layer on
|
|
7
7
|
// top of this.
|
|
8
|
+
import ts from 'typescript';
|
|
8
9
|
import { AzerothProject, toVirtualFile } from "./ts-project.js";
|
|
9
10
|
import { uriToPath } from "./uri.js";
|
|
11
|
+
import { DiagnosticSeverity } from "./protocol.js";
|
|
10
12
|
import { LineIndex } from "./text.js";
|
|
11
13
|
import { getCompletions, resolveCompletion } from "./providers/completion.js";
|
|
12
14
|
import { getHover } from "./providers/hover.js";
|
|
@@ -30,8 +32,47 @@ import { getInlayHints } from "./providers/inlay-hints.js";
|
|
|
30
32
|
*/
|
|
31
33
|
export class AzerothLanguageService {
|
|
32
34
|
project;
|
|
33
|
-
constructor(workspaceDirectory, configPath) {
|
|
34
|
-
this.project = new AzerothProject(workspaceDirectory, configPath);
|
|
35
|
+
constructor(workspaceDirectory, configPath, options = {}) {
|
|
36
|
+
this.project = new AzerothProject(workspaceDirectory, configPath, options);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The consuming project's real `.ts` files (from its tsconfig). Used by the
|
|
40
|
+
* combined checker to iterate the `.ts` side; only populated meaningfully
|
|
41
|
+
* when the service was constructed with `{ rootProjectFiles: true }`.
|
|
42
|
+
*/
|
|
43
|
+
getProjectTsFiles() {
|
|
44
|
+
return this.project.getProjectFiles();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Diagnostics for a real `.ts` file in the program (no offset
|
|
48
|
+
* mapping - positions are the file's own). Lets the combined checker report
|
|
49
|
+
* `.ts` errors - including those at the `.ts` -> `.azeroth` import boundary -
|
|
50
|
+
* from the same program that checks the `.azeroth` files.
|
|
51
|
+
*/
|
|
52
|
+
getTsDiagnostics(filePath) {
|
|
53
|
+
const service = this.project.service;
|
|
54
|
+
const raw = [
|
|
55
|
+
...service.getSyntacticDiagnostics(filePath),
|
|
56
|
+
...service.getSemanticDiagnostics(filePath)
|
|
57
|
+
];
|
|
58
|
+
const out = [];
|
|
59
|
+
for (const diag of raw) {
|
|
60
|
+
if (diag.start === undefined || diag.length === undefined || !diag.file) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const start = diag.file.getLineAndCharacterOfPosition(diag.start);
|
|
64
|
+
const end = diag.file.getLineAndCharacterOfPosition(diag.start + diag.length);
|
|
65
|
+
out.push({
|
|
66
|
+
range: { start, end },
|
|
67
|
+
severity: diag.category === ts.DiagnosticCategory.Error
|
|
68
|
+
? DiagnosticSeverity.Error
|
|
69
|
+
: DiagnosticSeverity.Warning,
|
|
70
|
+
message: ts.flattenDiagnosticMessageText(diag.messageText, '\n'),
|
|
71
|
+
code: diag.code,
|
|
72
|
+
source: 'azeroth-ts'
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
35
76
|
}
|
|
36
77
|
/** Registers or replaces a document's content. */
|
|
37
78
|
didOpen(uri, source) {
|
|
@@ -45,6 +86,14 @@ export class AzerothLanguageService {
|
|
|
45
86
|
didClose(uri) {
|
|
46
87
|
this.project.closeDocument(uriToPath(uri));
|
|
47
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Re-scans the workspace for `.azeroth` files. Call on a watched-file
|
|
91
|
+
* create/delete so newly-added components join the program (cross-file
|
|
92
|
+
* completion, go-to-definition, auto-import) without a restart.
|
|
93
|
+
*/
|
|
94
|
+
refreshWorkspace() {
|
|
95
|
+
this.project.refreshWorkspace();
|
|
96
|
+
}
|
|
48
97
|
/** Context-aware completion at a position. */
|
|
49
98
|
getCompletions(uri, position, options) {
|
|
50
99
|
const ctx = this.context(uri);
|
package/dist/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,gFAAgF;AAChF,eAAe;AAEf,OAAO,EACH,cAAc,EACd,aAAa,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAqBtC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAA0B,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,iBAAiB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACH,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAyB,MAAM,4BAA4B,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,OAAO,sBAAsB;IAEd,OAAO,CAAiB;IAEzC,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/ts-project.d.ts
CHANGED
|
@@ -26,7 +26,22 @@ export declare class AzerothProject {
|
|
|
26
26
|
private readonly virtualCache;
|
|
27
27
|
private readonly options;
|
|
28
28
|
/** Virtual names of every `.azeroth` file found in the workspace. */
|
|
29
|
-
private
|
|
29
|
+
private discovered;
|
|
30
|
+
/**
|
|
31
|
+
* Memoized `getScriptFileNames` result. TS queries the root file list very
|
|
32
|
+
* frequently; the set only changes when `projectVersion` does (open/close or
|
|
33
|
+
* a workspace refresh), so we rebuild lazily and cache against that version.
|
|
34
|
+
*/
|
|
35
|
+
private scriptNamesCache;
|
|
36
|
+
/**
|
|
37
|
+
* Per-file disk mtime cache for `getScriptVersion`. Without it every version
|
|
38
|
+
* query stats the disk; TS asks once per file per program build, so the same
|
|
39
|
+
* `.azeroth`/real file gets stat-ed repeatedly. The cache is valid for one
|
|
40
|
+
* `projectVersion` epoch - any edit (which bumps the version) clears it, so a
|
|
41
|
+
* genuine change is never masked.
|
|
42
|
+
*/
|
|
43
|
+
private readonly mtimeCache;
|
|
44
|
+
private mtimeCacheVersion;
|
|
30
45
|
/**
|
|
31
46
|
* The consuming project's own ambient/global declaration files (`.d.ts`
|
|
32
47
|
* roots from the tsconfig's `include`/`files`). They are kept in the program
|
|
@@ -34,8 +49,26 @@ export declare class AzerothProject {
|
|
|
34
49
|
* {@link resolveProject}.
|
|
35
50
|
*/
|
|
36
51
|
private readonly ambientFiles;
|
|
52
|
+
/**
|
|
53
|
+
* The consuming project's real `.ts` source files (from the tsconfig).
|
|
54
|
+
* AzerothJS projects are `.ts` + `.azeroth` (the `.azeroth` language replaces
|
|
55
|
+
* `.tsx`). The editor doesn't root these - they enter the program on demand
|
|
56
|
+
* via imports - but the combined command-line checker does
|
|
57
|
+
* ({@link rootProjectFiles}), so a `.ts` file importing a `.azeroth`
|
|
58
|
+
* component is type-checked in the SAME program as the `.azeroth` files.
|
|
59
|
+
*/
|
|
60
|
+
private readonly projectFiles;
|
|
61
|
+
/** When true, {@link projectFiles} are program roots (the CLI checker). */
|
|
62
|
+
private readonly rootProjectFiles;
|
|
37
63
|
private projectVersion;
|
|
38
|
-
constructor(currentDirectory: string, configPath?: string
|
|
64
|
+
constructor(currentDirectory: string, configPath?: string, options?: {
|
|
65
|
+
rootProjectFiles?: boolean;
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* The consuming project's real `.ts` files (absolute, forward-slash). Used
|
|
69
|
+
* by the combined checker to iterate diagnostics over the `.ts` side.
|
|
70
|
+
*/
|
|
71
|
+
getProjectFiles(): readonly string[];
|
|
39
72
|
/** Path of the injected ambient declarations file. */
|
|
40
73
|
private readonly intrinsicsFile;
|
|
41
74
|
/**
|
|
@@ -50,6 +83,14 @@ export declare class AzerothProject {
|
|
|
50
83
|
closeDocument(azerothPath: string): void;
|
|
51
84
|
/** All currently-open `.azeroth` paths. */
|
|
52
85
|
openPaths(): string[];
|
|
86
|
+
/**
|
|
87
|
+
* Re-scans the workspace for `.azeroth` files and bumps the project version
|
|
88
|
+
* so the program picks up files created or deleted since startup. The
|
|
89
|
+
* editor/LSP should call this on a watched-file create/delete; without it a
|
|
90
|
+
* newly-added component would be invisible to cross-file completion and
|
|
91
|
+
* go-to-definition until the service restarts.
|
|
92
|
+
*/
|
|
93
|
+
refreshWorkspace(): void;
|
|
53
94
|
/** The current source of a `.azeroth` document (open buffer or disk). */
|
|
54
95
|
getSource(azerothPath: string): string | undefined;
|
|
55
96
|
/**
|
|
@@ -60,6 +101,13 @@ export declare class AzerothProject {
|
|
|
60
101
|
getVirtual(azerothPath: string): VirtualCode;
|
|
61
102
|
/** Reads a `.azeroth` source from the open set or disk. */
|
|
62
103
|
private readAzeroth;
|
|
104
|
+
/**
|
|
105
|
+
* Disk mtime as a version string, memoized for the current `projectVersion`
|
|
106
|
+
* epoch so repeated `getScriptVersion` queries don't re-stat the same file.
|
|
107
|
+
* Cleared on any edit (the version bump), so a real on-disk change is still
|
|
108
|
+
* seen on the next epoch.
|
|
109
|
+
*/
|
|
110
|
+
private diskVersion;
|
|
63
111
|
/** Builds the language service host backing the virtual project. */
|
|
64
112
|
private createHost;
|
|
65
113
|
/** fileExists that also reports the synthetic virtual twins as present. */
|
package/dist/ts-project.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-project.d.ts","sourceRoot":"","sources":["../src/ts-project.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwB1E,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGzD;
|
|
1
|
+
{"version":3,"file":"ts-project.d.ts","sourceRoot":"","sources":["../src/ts-project.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAwB1E,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGzD;AA2BD;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IAwDnB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAtDrC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;IAEnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAEjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,qEAAqE;IACrE,OAAO,CAAC,UAAU,CAAW;IAE7B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAqD;IAE7E;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,OAAO,CAAC,iBAAiB,CAAM;IAE/B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;IAExC;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;IAExC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAE3C,OAAO,CAAC,cAAc,CAAK;gBAGN,gBAAgB,EAAE,MAAM,EACzC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO;IAahD;;;OAGG;IACI,eAAe,IAAI,SAAS,MAAM,EAAE;IAK3C,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkBzB,qDAAqD;IAC9C,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS9D,0DAA0D;IACnD,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQ/C,2CAA2C;IACpC,SAAS,IAAI,MAAM,EAAE;IAK5B;;;;;;OAMG;IACI,gBAAgB,IAAI,IAAI;IAM/B,yEAAyE;IAClE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKzD;;;;OAIG;IACI,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IAiBnD,2DAA2D;IAC3D,OAAO,CAAC,WAAW;IAYnB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAiBnB,oEAAoE;IACpE,OAAO,CAAC,UAAU;IAqFlB,2EAA2E;IAC3E,OAAO,CAAC,cAAc;IAgBtB,uEAAuE;IACvE,OAAO,CAAC,YAAY;IAkBpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAgFhC"}
|
package/dist/ts-project.js
CHANGED
|
@@ -47,6 +47,16 @@ export function toVirtualFile(azerothPath) {
|
|
|
47
47
|
export function toAzerothPath(virtualFile) {
|
|
48
48
|
return virtualFile.slice(0, -3);
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Normalizes a path to forward slashes - the separator TypeScript uses
|
|
52
|
+
* internally and the one `uriToPath` produces. Open-document keys and resolved
|
|
53
|
+
* module paths must agree on it: on Windows, `ts.sys.resolvePath` returns
|
|
54
|
+
* backslashes, so a raw compare against a forward-slash open-doc key would miss
|
|
55
|
+
* and a cross-file `.azeroth` import would wrongly resolve to `any`.
|
|
56
|
+
*/
|
|
57
|
+
function toSlashes(filePath) {
|
|
58
|
+
return filePath.replace(/\\/g, '/');
|
|
59
|
+
}
|
|
50
60
|
/**
|
|
51
61
|
* Hosts a TypeScript language service over the workspace's `.azeroth` (and
|
|
52
62
|
* real) files. One instance per workspace folder.
|
|
@@ -68,6 +78,21 @@ export class AzerothProject {
|
|
|
68
78
|
options;
|
|
69
79
|
/** Virtual names of every `.azeroth` file found in the workspace. */
|
|
70
80
|
discovered;
|
|
81
|
+
/**
|
|
82
|
+
* Memoized `getScriptFileNames` result. TS queries the root file list very
|
|
83
|
+
* frequently; the set only changes when `projectVersion` does (open/close or
|
|
84
|
+
* a workspace refresh), so we rebuild lazily and cache against that version.
|
|
85
|
+
*/
|
|
86
|
+
scriptNamesCache = null;
|
|
87
|
+
/**
|
|
88
|
+
* Per-file disk mtime cache for `getScriptVersion`. Without it every version
|
|
89
|
+
* query stats the disk; TS asks once per file per program build, so the same
|
|
90
|
+
* `.azeroth`/real file gets stat-ed repeatedly. The cache is valid for one
|
|
91
|
+
* `projectVersion` epoch - any edit (which bumps the version) clears it, so a
|
|
92
|
+
* genuine change is never masked.
|
|
93
|
+
*/
|
|
94
|
+
mtimeCache = new Map();
|
|
95
|
+
mtimeCacheVersion = -1;
|
|
71
96
|
/**
|
|
72
97
|
* The consuming project's own ambient/global declaration files (`.d.ts`
|
|
73
98
|
* roots from the tsconfig's `include`/`files`). They are kept in the program
|
|
@@ -75,16 +100,36 @@ export class AzerothProject {
|
|
|
75
100
|
* {@link resolveProject}.
|
|
76
101
|
*/
|
|
77
102
|
ambientFiles;
|
|
103
|
+
/**
|
|
104
|
+
* The consuming project's real `.ts` source files (from the tsconfig).
|
|
105
|
+
* AzerothJS projects are `.ts` + `.azeroth` (the `.azeroth` language replaces
|
|
106
|
+
* `.tsx`). The editor doesn't root these - they enter the program on demand
|
|
107
|
+
* via imports - but the combined command-line checker does
|
|
108
|
+
* ({@link rootProjectFiles}), so a `.ts` file importing a `.azeroth`
|
|
109
|
+
* component is type-checked in the SAME program as the `.azeroth` files.
|
|
110
|
+
*/
|
|
111
|
+
projectFiles;
|
|
112
|
+
/** When true, {@link projectFiles} are program roots (the CLI checker). */
|
|
113
|
+
rootProjectFiles;
|
|
78
114
|
projectVersion = 0;
|
|
79
|
-
constructor(currentDirectory, configPath) {
|
|
115
|
+
constructor(currentDirectory, configPath, options = {}) {
|
|
80
116
|
this.currentDirectory = currentDirectory;
|
|
81
117
|
const resolved = AzerothProject.resolveProject(currentDirectory, configPath);
|
|
82
118
|
this.options = resolved.options;
|
|
83
119
|
this.ambientFiles = resolved.ambientFiles;
|
|
120
|
+
this.projectFiles = resolved.projectFiles;
|
|
121
|
+
this.rootProjectFiles = options.rootProjectFiles ?? false;
|
|
84
122
|
this.intrinsicsFile = `${currentDirectory.replace(/\\/g, '/').replace(/\/$/, '')}/${INTRINSICS_BASENAME}`;
|
|
85
123
|
this.discovered = this.discoverWorkspace();
|
|
86
124
|
this.service = ts.createLanguageService(this.createHost(), ts.createDocumentRegistry());
|
|
87
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* The consuming project's real `.ts` files (absolute, forward-slash). Used
|
|
128
|
+
* by the combined checker to iterate diagnostics over the `.ts` side.
|
|
129
|
+
*/
|
|
130
|
+
getProjectFiles() {
|
|
131
|
+
return this.projectFiles;
|
|
132
|
+
}
|
|
88
133
|
/** Path of the injected ambient declarations file. */
|
|
89
134
|
intrinsicsFile;
|
|
90
135
|
/**
|
|
@@ -103,21 +148,34 @@ export class AzerothProject {
|
|
|
103
148
|
}
|
|
104
149
|
/** Registers/updates an open `.azeroth` document. */
|
|
105
150
|
openDocument(azerothPath, source) {
|
|
106
|
-
const
|
|
107
|
-
this.open.
|
|
108
|
-
this.
|
|
151
|
+
const key = toSlashes(azerothPath);
|
|
152
|
+
const prev = this.open.get(key);
|
|
153
|
+
this.open.set(key, { source, version: (prev?.version ?? 0) + 1 });
|
|
154
|
+
this.virtualCache.delete(key);
|
|
109
155
|
this.projectVersion++;
|
|
110
156
|
}
|
|
111
157
|
/** Drops an open document (e.g. the editor closed it). */
|
|
112
158
|
closeDocument(azerothPath) {
|
|
113
|
-
|
|
114
|
-
this.
|
|
159
|
+
const key = toSlashes(azerothPath);
|
|
160
|
+
this.open.delete(key);
|
|
161
|
+
this.virtualCache.delete(key);
|
|
115
162
|
this.projectVersion++;
|
|
116
163
|
}
|
|
117
164
|
/** All currently-open `.azeroth` paths. */
|
|
118
165
|
openPaths() {
|
|
119
166
|
return [...this.open.keys()];
|
|
120
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Re-scans the workspace for `.azeroth` files and bumps the project version
|
|
170
|
+
* so the program picks up files created or deleted since startup. The
|
|
171
|
+
* editor/LSP should call this on a watched-file create/delete; without it a
|
|
172
|
+
* newly-added component would be invisible to cross-file completion and
|
|
173
|
+
* go-to-definition until the service restarts.
|
|
174
|
+
*/
|
|
175
|
+
refreshWorkspace() {
|
|
176
|
+
this.discovered = this.discoverWorkspace();
|
|
177
|
+
this.projectVersion++;
|
|
178
|
+
}
|
|
121
179
|
/** The current source of a `.azeroth` document (open buffer or disk). */
|
|
122
180
|
getSource(azerothPath) {
|
|
123
181
|
return this.readAzeroth(azerothPath);
|
|
@@ -128,47 +186,83 @@ export class AzerothProject {
|
|
|
128
186
|
* mapping always matches the snapshot TypeScript analyzed.
|
|
129
187
|
*/
|
|
130
188
|
getVirtual(azerothPath) {
|
|
131
|
-
|
|
132
|
-
|
|
189
|
+
// Normalize so the cache key matches the forward-slash key openDocument
|
|
190
|
+
// stores - the read and write sides must agree (see toSlashes).
|
|
191
|
+
const key = toSlashes(azerothPath);
|
|
192
|
+
const source = this.readAzeroth(key) ?? '';
|
|
193
|
+
const cached = this.virtualCache.get(key);
|
|
133
194
|
if (cached && cached.source === source) {
|
|
134
195
|
return cached;
|
|
135
196
|
}
|
|
136
197
|
const built = generateVirtualCode(source);
|
|
137
198
|
const entry = { ...built, source };
|
|
138
|
-
this.virtualCache.set(
|
|
199
|
+
this.virtualCache.set(key, entry);
|
|
139
200
|
return entry;
|
|
140
201
|
}
|
|
141
202
|
/** Reads a `.azeroth` source from the open set or disk. */
|
|
142
203
|
readAzeroth(azerothPath) {
|
|
143
|
-
|
|
204
|
+
// Look the open buffer up under the same forward-slash key openDocument
|
|
205
|
+
// writes; a backslash path would otherwise miss it and serve stale disk.
|
|
206
|
+
const doc = this.open.get(toSlashes(azerothPath));
|
|
144
207
|
if (doc) {
|
|
145
208
|
return doc.source;
|
|
146
209
|
}
|
|
147
210
|
return ts.sys.readFile(azerothPath);
|
|
148
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Disk mtime as a version string, memoized for the current `projectVersion`
|
|
214
|
+
* epoch so repeated `getScriptVersion` queries don't re-stat the same file.
|
|
215
|
+
* Cleared on any edit (the version bump), so a real on-disk change is still
|
|
216
|
+
* seen on the next epoch.
|
|
217
|
+
*/
|
|
218
|
+
diskVersion(fileName) {
|
|
219
|
+
if (this.mtimeCacheVersion !== this.projectVersion) {
|
|
220
|
+
this.mtimeCache.clear();
|
|
221
|
+
this.mtimeCacheVersion = this.projectVersion;
|
|
222
|
+
}
|
|
223
|
+
const cached = this.mtimeCache.get(fileName);
|
|
224
|
+
if (cached !== undefined) {
|
|
225
|
+
return cached;
|
|
226
|
+
}
|
|
227
|
+
const version = String(ts.sys.getModifiedTime?.(fileName)?.getTime() ?? 0);
|
|
228
|
+
this.mtimeCache.set(fileName, version);
|
|
229
|
+
return version;
|
|
230
|
+
}
|
|
149
231
|
/** Builds the language service host backing the virtual project. */
|
|
150
232
|
createHost() {
|
|
151
233
|
// Every member below is an arrow function, so `this` is lexically the
|
|
152
234
|
// project instance; no alias is needed.
|
|
153
235
|
const host = {
|
|
154
|
-
getScriptFileNames: () =>
|
|
155
|
-
this.
|
|
156
|
-
|
|
157
|
-
|
|
236
|
+
getScriptFileNames: () => {
|
|
237
|
+
if (this.scriptNamesCache?.version === this.projectVersion) {
|
|
238
|
+
return this.scriptNamesCache.names;
|
|
239
|
+
}
|
|
240
|
+
const names = [
|
|
241
|
+
this.intrinsicsFile,
|
|
242
|
+
...new Set([
|
|
243
|
+
...this.ambientFiles,
|
|
244
|
+
...(this.rootProjectFiles ? this.projectFiles : []),
|
|
245
|
+
...this.openPaths().map(toVirtualFile),
|
|
246
|
+
...this.discovered
|
|
247
|
+
])
|
|
248
|
+
];
|
|
249
|
+
this.scriptNamesCache = { version: this.projectVersion, names };
|
|
250
|
+
return names;
|
|
251
|
+
},
|
|
158
252
|
getProjectVersion: () => String(this.projectVersion),
|
|
159
253
|
getScriptVersion: (fileName) => {
|
|
160
254
|
if (fileName === this.intrinsicsFile) {
|
|
161
255
|
return '1';
|
|
162
256
|
}
|
|
163
257
|
if (isVirtualFile(fileName)) {
|
|
164
|
-
const azerothPath = toAzerothPath(fileName);
|
|
258
|
+
const azerothPath = toSlashes(toAzerothPath(fileName));
|
|
165
259
|
const doc = this.open.get(azerothPath);
|
|
166
260
|
if (doc) {
|
|
167
261
|
return `o${doc.version}`;
|
|
168
262
|
}
|
|
169
|
-
return `d${
|
|
263
|
+
return `d${this.diskVersion(azerothPath)}`;
|
|
170
264
|
}
|
|
171
|
-
return
|
|
265
|
+
return this.diskVersion(fileName);
|
|
172
266
|
},
|
|
173
267
|
getScriptSnapshot: (fileName) => {
|
|
174
268
|
if (fileName === this.intrinsicsFile) {
|
|
@@ -204,7 +298,7 @@ export class AzerothProject {
|
|
|
204
298
|
return true;
|
|
205
299
|
}
|
|
206
300
|
if (isVirtualFile(fileName)) {
|
|
207
|
-
const azerothPath = toAzerothPath(fileName);
|
|
301
|
+
const azerothPath = toSlashes(toAzerothPath(fileName));
|
|
208
302
|
return this.open.has(azerothPath) || ts.sys.fileExists(azerothPath);
|
|
209
303
|
}
|
|
210
304
|
return ts.sys.fileExists(fileName);
|
|
@@ -232,8 +326,8 @@ export class AzerothProject {
|
|
|
232
326
|
return literals.map((literal) => {
|
|
233
327
|
const text = literal.text;
|
|
234
328
|
if (text.endsWith('.azeroth') && (text.startsWith('.') || text.startsWith('/'))) {
|
|
235
|
-
const dir = ts.sys.resolvePath(containingFile).replace(
|
|
236
|
-
const candidate = ts.sys.resolvePath(`${dir}/${text}`);
|
|
329
|
+
const dir = toSlashes(ts.sys.resolvePath(containingFile)).replace(/\/[^/]*$/, '');
|
|
330
|
+
const candidate = toSlashes(ts.sys.resolvePath(`${dir}/${text}`));
|
|
237
331
|
if (this.hostFileExists(toVirtualFile(candidate))) {
|
|
238
332
|
return {
|
|
239
333
|
resolvedModule: {
|
|
@@ -266,16 +360,51 @@ export class AzerothProject {
|
|
|
266
360
|
static resolveProject(currentDirectory, configPath) {
|
|
267
361
|
let options = {};
|
|
268
362
|
let ambientFiles = [];
|
|
363
|
+
let projectFiles = [];
|
|
269
364
|
const found = configPath ?? ts.findConfigFile(currentDirectory, ts.sys.fileExists, 'tsconfig.json');
|
|
270
365
|
if (found) {
|
|
271
366
|
const read = ts.readConfigFile(found, ts.sys.readFile);
|
|
272
367
|
const parsed = ts.parseJsonConfigFileContent(read.config ?? {}, ts.sys, found.replace(/[\\/][^\\/]*$/, ''));
|
|
273
368
|
options = parsed.options;
|
|
369
|
+
// The project's real source files (not `.d.ts`), so the combined
|
|
370
|
+
// checker can type-check the `.ts` side in the same program as the
|
|
371
|
+
// `.azeroth` files. AzerothJS projects are `.ts` + `.azeroth`.
|
|
372
|
+
projectFiles = parsed.fileNames.filter(name => !name.endsWith('.d.ts')).map(toSlashes);
|
|
274
373
|
// Keep the project's ambient/global declaration roots so their
|
|
275
374
|
// augmentations (and ambient module declarations) apply inside
|
|
276
375
|
// `.azeroth`. Only `.d.ts` files - pulling in every project `.ts`
|
|
277
376
|
// would bloat the program and isn't needed for global typing.
|
|
278
|
-
|
|
377
|
+
const roots = parsed.fileNames.filter(name => name.endsWith('.d.ts'));
|
|
378
|
+
// Resolve `compilerOptions.types` the way tsc does (type reference
|
|
379
|
+
// directives -> typeRoots / node_modules) and include each resolved
|
|
380
|
+
// `.d.ts`. tsc loads these packages for their globals (e.g.
|
|
381
|
+
// "vite/client" -> node_modules/vite/client.d.ts, which augments
|
|
382
|
+
// `ImportMeta.env` and declares `*.png` / `?url`); including them
|
|
383
|
+
// explicitly makes those augmentations apply inside `.azeroth` even
|
|
384
|
+
// when the project has NO triple-slash `vite-env.d.ts`. The TS
|
|
385
|
+
// program already includes `types` automatically, but a language
|
|
386
|
+
// service host can miss them, so this guarantees parity with tsc.
|
|
387
|
+
for (const typeName of options.types ?? []) {
|
|
388
|
+
const resolved = ts.resolveTypeReferenceDirective(typeName, found, options, ts.sys)
|
|
389
|
+
.resolvedTypeReferenceDirective;
|
|
390
|
+
if (resolved?.resolvedFileName) {
|
|
391
|
+
roots.push(resolved.resolvedFileName);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
// Zero-config Vite: if `vite/client` resolves (Vite is installed),
|
|
395
|
+
// include its globals - `interface ImportMeta` (so `import.meta.env`
|
|
396
|
+
// works) and the asset module declarations (`*.png`, `*.svg`, `?url`,
|
|
397
|
+
// `?raw`, ...). This lets a consumer delete BOTH `src/vite-env.d.ts`
|
|
398
|
+
// and the `"types": ["vite/client"]` tsconfig entry and still have
|
|
399
|
+
// those resolve inside `.azeroth`. Harmless otherwise: resolution
|
|
400
|
+
// fails when Vite isn't installed (nothing added), and a duplicate
|
|
401
|
+
// (already pulled in via `types`/a `vite-env.d.ts`) is deduped below.
|
|
402
|
+
const viteClient = ts.resolveTypeReferenceDirective('vite/client', found, options, ts.sys)
|
|
403
|
+
.resolvedTypeReferenceDirective?.resolvedFileName;
|
|
404
|
+
if (viteClient) {
|
|
405
|
+
roots.push(viteClient);
|
|
406
|
+
}
|
|
407
|
+
ambientFiles = [...new Set(roots)];
|
|
279
408
|
}
|
|
280
409
|
return {
|
|
281
410
|
options: {
|
|
@@ -291,7 +420,8 @@ export class AzerothProject {
|
|
|
291
420
|
skipLibCheck: true,
|
|
292
421
|
lib: options.lib ?? ['lib.esnext.d.ts', 'lib.dom.d.ts', 'lib.dom.iterable.d.ts']
|
|
293
422
|
},
|
|
294
|
-
ambientFiles
|
|
423
|
+
ambientFiles,
|
|
424
|
+
projectFiles
|
|
295
425
|
};
|
|
296
426
|
}
|
|
297
427
|
}
|
package/dist/ts-project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-project.js","sourceRoot":"","sources":["../src/ts-project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ts-project.js","sourceRoot":"","sources":["../src/ts-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-code.d.ts","sourceRoot":"","sources":["../src/virtual-code.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAyC,MAAM,cAAc,CAAC;AAKlF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAI/C,CAAC;AAIF,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAExB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,6DAA6D;IAC7D,OAAO,EAAE,WAAW,CAAC;CACxB;AAkDD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"virtual-code.d.ts","sourceRoot":"","sources":["../src/virtual-code.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,WAAW,EAAyC,MAAM,cAAc,CAAC;AAKlF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAI/C,CAAC;AAIF,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAExB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,6DAA6D;IAC7D,OAAO,EAAE,WAAW,CAAC;CACxB;AAkDD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAyR/D"}
|
package/dist/virtual-code.js
CHANGED
|
@@ -133,7 +133,22 @@ export function generateVirtualCode(source) {
|
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
const name = attr.name;
|
|
136
|
-
|
|
136
|
+
const key = objectKey(name);
|
|
137
|
+
if (key === name) {
|
|
138
|
+
// Copy the attribute name (mapped) rather than emitting it as
|
|
139
|
+
// scaffolding, so a prop-level diagnostic - e.g. an unknown prop on a
|
|
140
|
+
// typed component tag (`<Modal bogus={1}/>` -> excess property on
|
|
141
|
+
// `Modal({ bogus: ... })`) - maps back to the original attribute
|
|
142
|
+
// instead of landing in unmapped scaffolding and being dropped.
|
|
143
|
+
builder.copy(attr.start, attr.start + name.length, 'attribute');
|
|
144
|
+
builder.emit(': ');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Hyphenated/colon names (host attrs like `data-x`) can't be a bare
|
|
148
|
+
// key; emit a quoted key. These are host-only, where the permissive
|
|
149
|
+
// h() props type does no excess-property checking anyway.
|
|
150
|
+
builder.emit(`${key}: `);
|
|
151
|
+
}
|
|
137
152
|
if (attr.value.kind === 'none') {
|
|
138
153
|
builder.emit('true');
|
|
139
154
|
return;
|