@volar/language-core 1.4.0 → 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.
@@ -1,9 +1,9 @@
1
1
  import type * as ts from 'typescript/lib/tsserverlibrary';
2
- import { LanguageModule, LanguageServiceHost } from './types';
2
+ import { Language, LanguageServiceHost } from './types';
3
3
  export type LanguageContext = ReturnType<typeof createLanguageContext>;
4
- export declare function createLanguageContext(host: LanguageServiceHost, modules: {
4
+ export declare function createLanguageContext(modules: {
5
5
  typescript?: typeof import('typescript/lib/tsserverlibrary');
6
- }, languageModules: LanguageModule[]): {
6
+ }, host: LanguageServiceHost, languages: Language[]): {
7
7
  typescript: {
8
8
  languageServiceHost: ts.LanguageServiceHost;
9
9
  };
@@ -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(host, modules, languageModules) {
8
- for (const languageModule of languageModules.reverse()) {
9
- if (languageModule.proxyLanguageServiceHost) {
10
- const proxyApis = languageModule.proxyLanguageServiceHost(host);
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)(languageModules);
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 LanguageModule<T extends VirtualFile = VirtualFile> {
56
- createFile(fileName: string, snapshot: ts.IScriptSnapshot, languageId: string | undefined): T | undefined;
57
- updateFile(virtualFile: T, snapshot: ts.IScriptSnapshot): void;
58
- deleteFile?(virtualFile: T): void;
59
- proxyLanguageServiceHost?(host: LanguageServiceHost): Partial<LanguageServiceHost>;
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
@@ -37,5 +37,4 @@ var FileKind;
37
37
  FileKind[FileKind["TextFile"] = 0] = "TextFile";
38
38
  FileKind[FileKind["TypeScriptHostFile"] = 1] = "TypeScriptHostFile";
39
39
  })(FileKind = exports.FileKind || (exports.FileKind = {}));
40
- ;
41
40
  //# sourceMappingURL=types.js.map
@@ -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, LanguageModule, VirtualFile } from './types';
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
- languageModule: LanguageModule;
10
+ language: Language;
11
11
  }
12
- export declare function createVirtualFiles(languageModules: LanguageModule[]): {
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;
@@ -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(languageModules) {
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.languageModule.updateFile(value.root, snapshot);
21
+ value.language.updateVirtualFile(value.root, snapshot);
22
22
  sourceFilesDirty = true;
23
23
  return value.root; // updated
24
24
  }
25
- for (const languageModule of languageModules) {
26
- const virtualFile = languageModule.createFile(fileName, snapshot, languageId);
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, languageModule });
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.languageModule.deleteFile?.(value.root);
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.4.0",
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.4.0"
16
+ "@volar/source-map": "1.5.0-alpha.0"
17
17
  },
18
- "gitHead": "9bf14ef0d08c53f9ae32cf538d9748fa91cc4ab7"
18
+ "gitHead": "a4e1b3766ccb5affe1613cad7630513b9073d275"
19
19
  }