@volar/language-core 1.4.1 → 1.5.0-alpha.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/out/languageContext.d.ts +3 -3
- package/out/languageContext.js +5 -13
- package/out/types.d.ts +5 -5
- package/out/types.js +0 -1
- package/out/virtualFiles.d.ts +3 -3
- package/out/virtualFiles.js +6 -6
- package/package.json +3 -3
package/out/languageContext.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type * as ts from 'typescript/lib/tsserverlibrary';
|
|
2
|
-
import {
|
|
2
|
+
import { Language, LanguageServiceHost } from './types';
|
|
3
3
|
export type LanguageContext = ReturnType<typeof createLanguageContext>;
|
|
4
|
-
export declare function createLanguageContext(
|
|
4
|
+
export declare function createLanguageContext(modules: {
|
|
5
5
|
typescript?: typeof import('typescript/lib/tsserverlibrary');
|
|
6
|
-
},
|
|
6
|
+
}, host: LanguageServiceHost, languages: Language[]): {
|
|
7
7
|
typescript: {
|
|
8
8
|
languageServiceHost: ts.LanguageServiceHost;
|
|
9
9
|
};
|
package/out/languageContext.js
CHANGED
|
@@ -4,23 +4,15 @@ exports.createLanguageContext = void 0;
|
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const virtualFiles_1 = require("./virtualFiles");
|
|
6
6
|
const types_1 = require("./types");
|
|
7
|
-
function createLanguageContext(
|
|
8
|
-
for (const
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
host = new Proxy(host, {
|
|
12
|
-
get(target, key) {
|
|
13
|
-
if (key in proxyApis) {
|
|
14
|
-
return proxyApis[key];
|
|
15
|
-
}
|
|
16
|
-
return target[key];
|
|
17
|
-
},
|
|
18
|
-
});
|
|
7
|
+
function createLanguageContext(modules, host, languages) {
|
|
8
|
+
for (const language of languages.reverse()) {
|
|
9
|
+
if (language.resolveHost) {
|
|
10
|
+
host = language.resolveHost(host);
|
|
19
11
|
}
|
|
20
12
|
}
|
|
21
13
|
let lastProjectVersion;
|
|
22
14
|
let tsProjectVersion = 0;
|
|
23
|
-
const virtualFiles = (0, virtualFiles_1.createVirtualFiles)(
|
|
15
|
+
const virtualFiles = (0, virtualFiles_1.createVirtualFiles)(languages);
|
|
24
16
|
const ts = modules.typescript;
|
|
25
17
|
const scriptSnapshots = new Map();
|
|
26
18
|
const sourceTsFileVersions = new Map();
|
package/out/types.d.ts
CHANGED
|
@@ -52,11 +52,11 @@ export interface VirtualFile {
|
|
|
52
52
|
mirrorBehaviorMappings?: Mapping<[MirrorBehaviorCapabilities, MirrorBehaviorCapabilities]>[];
|
|
53
53
|
embeddedFiles: VirtualFile[];
|
|
54
54
|
}
|
|
55
|
-
export interface
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
export interface Language<T extends VirtualFile = VirtualFile> {
|
|
56
|
+
resolveHost?(host: LanguageServiceHost): LanguageServiceHost;
|
|
57
|
+
createVirtualFile(fileName: string, snapshot: ts.IScriptSnapshot, languageId: string | undefined): T | undefined;
|
|
58
|
+
updateVirtualFile(virtualFile: T, snapshot: ts.IScriptSnapshot): void;
|
|
59
|
+
deleteVirtualFile?(virtualFile: T): void;
|
|
60
60
|
}
|
|
61
61
|
export interface LanguageServiceHost extends ts.LanguageServiceHost {
|
|
62
62
|
getScriptLanguageId?(fileName: string): string | undefined;
|
package/out/types.js
CHANGED
package/out/virtualFiles.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { SourceMap } from '@volar/source-map';
|
|
2
2
|
import type * as ts from 'typescript/lib/tsserverlibrary';
|
|
3
3
|
import { MirrorMap } from './sourceMaps';
|
|
4
|
-
import type { FileRangeCapabilities,
|
|
4
|
+
import type { FileRangeCapabilities, Language, VirtualFile } from './types';
|
|
5
5
|
export type VirtualFiles = ReturnType<typeof createVirtualFiles>;
|
|
6
6
|
export interface Source {
|
|
7
7
|
fileName: string;
|
|
8
8
|
snapshot: ts.IScriptSnapshot;
|
|
9
9
|
root: VirtualFile;
|
|
10
|
-
|
|
10
|
+
language: Language;
|
|
11
11
|
}
|
|
12
|
-
export declare function createVirtualFiles(
|
|
12
|
+
export declare function createVirtualFiles(languages: Language[]): {
|
|
13
13
|
allSources(): Source[];
|
|
14
14
|
updateSource(fileName: string, snapshot: ts.IScriptSnapshot, languageId: string | undefined): VirtualFile | undefined;
|
|
15
15
|
deleteSource(fileName: string): void;
|
package/out/virtualFiles.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.forEachEmbeddedFile = exports.createVirtualFiles = void 0;
|
|
4
4
|
const source_map_1 = require("@volar/source-map");
|
|
5
5
|
const sourceMaps_1 = require("./sourceMaps");
|
|
6
|
-
function createVirtualFiles(
|
|
6
|
+
function createVirtualFiles(languages) {
|
|
7
7
|
const sourceFiles = new Map();
|
|
8
8
|
const virtualFiles = new Map();
|
|
9
9
|
const virtualFileToSourceMapsMap = new WeakMap();
|
|
@@ -18,14 +18,14 @@ function createVirtualFiles(languageModules) {
|
|
|
18
18
|
const value = sourceFiles.get(key);
|
|
19
19
|
if (value) {
|
|
20
20
|
value.snapshot = snapshot;
|
|
21
|
-
value.
|
|
21
|
+
value.language.updateVirtualFile(value.root, snapshot);
|
|
22
22
|
sourceFilesDirty = true;
|
|
23
23
|
return value.root; // updated
|
|
24
24
|
}
|
|
25
|
-
for (const
|
|
26
|
-
const virtualFile =
|
|
25
|
+
for (const language of languages) {
|
|
26
|
+
const virtualFile = language.createVirtualFile(fileName, snapshot, languageId);
|
|
27
27
|
if (virtualFile) {
|
|
28
|
-
sourceFiles.set(key, { fileName, snapshot, root: virtualFile,
|
|
28
|
+
sourceFiles.set(key, { fileName, snapshot, root: virtualFile, language });
|
|
29
29
|
sourceFilesDirty = true;
|
|
30
30
|
return virtualFile; // created
|
|
31
31
|
}
|
|
@@ -35,7 +35,7 @@ function createVirtualFiles(languageModules) {
|
|
|
35
35
|
const key = normalizePath(fileName);
|
|
36
36
|
const value = sourceFiles.get(key);
|
|
37
37
|
if (value) {
|
|
38
|
-
value.
|
|
38
|
+
value.language.deleteVirtualFile?.(value.root);
|
|
39
39
|
sourceFiles.delete(key); // deleted
|
|
40
40
|
sourceFilesDirty = true;
|
|
41
41
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/language-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0-alpha.0",
|
|
4
4
|
"main": "out/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"directory": "packages/language-core"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@volar/source-map": "1.
|
|
16
|
+
"@volar/source-map": "1.5.0-alpha.0"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "a4e1b3766ccb5affe1613cad7630513b9073d275"
|
|
19
19
|
}
|