volar-service-typescript 0.0.38 → 0.0.40

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,12 +1,12 @@
1
1
  import type { ProviderResult, ServiceContext, LanguageServicePlugin } from '@volar/language-service';
2
2
  import type { TextDocument } from 'vscode-languageserver-textdocument';
3
- export declare function create(ts: typeof import('typescript'), { isFormattingEnabled, isAutoClosingTagsEnabled, }?: {
4
- isFormattingEnabled?(document: TextDocument, context: ServiceContext): ProviderResult<boolean>;
5
- isAutoClosingTagsEnabled?(document: TextDocument, context: ServiceContext): ProviderResult<boolean>;
6
- }): LanguageServicePlugin;
7
3
  import type * as ts from 'typescript';
8
4
  export declare function getLanguageServiceByDocument(ts: typeof import('typescript'), document: TextDocument): {
9
5
  languageService: ts.LanguageService;
10
6
  fileName: string;
11
7
  };
8
+ export declare function create(ts: typeof import('typescript'), { isFormattingEnabled, isAutoClosingTagsEnabled, }?: {
9
+ isFormattingEnabled?(document: TextDocument, context: ServiceContext): ProviderResult<boolean>;
10
+ isAutoClosingTagsEnabled?(document: TextDocument, context: ServiceContext): ProviderResult<boolean>;
11
+ }): LanguageServicePlugin;
12
12
  //# sourceMappingURL=syntactic.d.ts.map
@@ -1,10 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLanguageServiceByDocument = exports.create = void 0;
3
+ exports.create = exports.getLanguageServiceByDocument = void 0;
4
4
  const getFormatCodeSettings_1 = require("../configs/getFormatCodeSettings");
5
5
  const shared_1 = require("../shared");
6
6
  const lspConverters_1 = require("../utils/lspConverters");
7
- const syntacticLanguageService_1 = require("../syntacticLanguageService");
7
+ const syntaxOnlyService_1 = require("../syntaxOnlyService");
8
+ const snapshots = new WeakMap();
9
+ let created;
10
+ function getLanguageServiceByDocument(ts, document) {
11
+ if (!created) {
12
+ created = (0, syntaxOnlyService_1.createSyntaxOnlyService)(ts, true);
13
+ }
14
+ let cache = snapshots.get(document);
15
+ if (!cache || cache[0] !== document.version) {
16
+ const snapshot = ts.ScriptSnapshot.fromString(document.getText());
17
+ cache = [document.version, snapshot];
18
+ snapshots.set(document, cache);
19
+ created.updateFile(document.uri, cache[1], document.languageId === 'javascript'
20
+ ? ts.ScriptKind.JS
21
+ : document.languageId === 'javascriptreact'
22
+ ? ts.ScriptKind.JSX
23
+ : document.languageId === 'typescriptreact'
24
+ ? ts.ScriptKind.TSX
25
+ : ts.ScriptKind.TS);
26
+ }
27
+ return {
28
+ languageService: created.languageService,
29
+ fileName: document.uri,
30
+ };
31
+ }
32
+ exports.getLanguageServiceByDocument = getLanguageServiceByDocument;
8
33
  function create(ts, { isFormattingEnabled = async (document, context) => {
9
34
  return await context.env.getConfiguration?.((0, shared_1.getConfigTitle)(document) + '.format.enable') ?? true;
10
35
  }, isAutoClosingTagsEnabled = async (document, context) => {
@@ -100,15 +125,4 @@ function create(ts, { isFormattingEnabled = async (document, context) => {
100
125
  };
101
126
  }
102
127
  exports.create = create;
103
- const snapshots = new WeakMap();
104
- function getLanguageServiceByDocument(ts, document) {
105
- let cache = snapshots.get(document);
106
- if (!cache || cache[0] !== document.version) {
107
- const snapshot = ts.ScriptSnapshot.fromString(document.getText());
108
- cache = [document.version, snapshot];
109
- snapshots.set(document, cache);
110
- }
111
- return (0, syntacticLanguageService_1.getLanguageService)(ts, cache[1], document.languageId, true);
112
- }
113
- exports.getLanguageServiceByDocument = getLanguageServiceByDocument;
114
128
  //# sourceMappingURL=syntactic.js.map
@@ -0,0 +1,6 @@
1
+ import type * as ts from 'typescript';
2
+ export declare function createSyntaxOnlyService(ts: typeof import('typescript'), syntaxOnly: boolean): {
3
+ languageService: ts.LanguageService;
4
+ updateFile: (fileName: string, snapshot: ts.IScriptSnapshot, scriptKind: ts.ScriptKind) => void;
5
+ };
6
+ //# sourceMappingURL=syntaxOnlyService.d.ts.map
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSyntaxOnlyService = void 0;
4
+ function createSyntaxOnlyService(ts, syntaxOnly) {
5
+ let currentProjectVersion = -1;
6
+ let fileNames = [];
7
+ const scriptInfos = new Map();
8
+ const host = {
9
+ getProjectVersion: () => currentProjectVersion.toString(),
10
+ getScriptFileNames: () => fileNames,
11
+ getScriptVersion: () => currentProjectVersion.toString(),
12
+ getScriptSnapshot: fileName => scriptInfos.get(fileName).snapshot,
13
+ getScriptKind: fileName => scriptInfos.get(fileName).kind,
14
+ getCompilationSettings: () => ({}),
15
+ getCurrentDirectory: () => '',
16
+ getDefaultLibFileName: () => '',
17
+ readFile: () => undefined,
18
+ fileExists: fileName => scriptInfos.has(fileName),
19
+ };
20
+ return {
21
+ languageService: syntaxOnly
22
+ ? ts.createLanguageService(host, undefined, ts.LanguageServiceMode.Syntactic)
23
+ : ts.createLanguageService(host),
24
+ updateFile,
25
+ };
26
+ function updateFile(fileName, snapshot, scriptKind) {
27
+ let scriptInfo = scriptInfos.get(fileName);
28
+ if (scriptInfo?.snapshot === snapshot && scriptInfo.kind === scriptKind) {
29
+ return;
30
+ }
31
+ currentProjectVersion++;
32
+ scriptInfo = {
33
+ snapshot,
34
+ kind: scriptKind,
35
+ version: (scriptInfo?.version ?? 0) + 1,
36
+ };
37
+ const filesChanged = !scriptInfos.has(fileName);
38
+ scriptInfos.set(fileName, scriptInfo);
39
+ if (filesChanged) {
40
+ fileNames = [...scriptInfos.keys()];
41
+ }
42
+ }
43
+ }
44
+ exports.createSyntaxOnlyService = createSyntaxOnlyService;
45
+ //# sourceMappingURL=syntaxOnlyService.js.map
@@ -1,5 +1,5 @@
1
1
  import type * as ts from 'typescript';
2
2
  export declare namespace SymbolKind {
3
- function fromProtocolScriptElementKind(kind: ts.ScriptElementKind): 2 | 5 | 10 | 22 | 11 | 6 | 7 | 13 | 12 | 9 | 26 | 15;
3
+ function fromProtocolScriptElementKind(kind: ts.ScriptElementKind): 2 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 15 | 22 | 26;
4
4
  }
5
5
  //# sourceMappingURL=typeConverters.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volar-service-typescript",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "description": "Integrate TypeScript into Volar",
5
5
  "homepage": "https://github.com/volarjs/services/tree/master/packages/typescript",
6
6
  "bugs": "https://github.com/volarjs/services/issues",
@@ -42,5 +42,5 @@
42
42
  "optional": true
43
43
  }
44
44
  },
45
- "gitHead": "65ba3d69ae39a3c780622c62a410ecff495e36a7"
45
+ "gitHead": "75c5472887e274929fa4c0c2a54f9e97e4fe30a0"
46
46
  }
@@ -1,6 +0,0 @@
1
- import type * as ts from 'typescript';
2
- export declare function getLanguageService(ts: typeof import('typescript'), snapshot: ts.IScriptSnapshot, languageId: string, syntaxOnly: boolean): {
3
- languageService: ts.LanguageService;
4
- fileName: string;
5
- };
6
- //# sourceMappingURL=syntacticLanguageService.d.ts.map
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLanguageService = void 0;
4
- let currentProjectVersion = -1;
5
- let currentFileName = '';
6
- let currentSnapshot;
7
- let languageService;
8
- let syntaxOnlyLanguageService;
9
- const host = {
10
- getProjectVersion: () => currentProjectVersion.toString(),
11
- getScriptFileNames: () => [currentFileName],
12
- getScriptVersion: () => currentProjectVersion.toString(),
13
- getScriptSnapshot: fileName => fileName === currentFileName ? currentSnapshot : undefined,
14
- getCompilationSettings: () => ({}),
15
- getCurrentDirectory: () => '',
16
- getDefaultLibFileName: () => '',
17
- readFile: () => undefined,
18
- fileExists: fileName => fileName === currentFileName,
19
- };
20
- function getLanguageService(ts, snapshot, languageId, syntaxOnly) {
21
- if (currentSnapshot !== snapshot) {
22
- currentSnapshot = snapshot;
23
- currentFileName = '/tmp.' + (languageId === 'javascript' ? 'js' :
24
- languageId === 'typescriptreact' ? 'tsx' :
25
- languageId === 'javascriptreact' ? 'jsx' :
26
- 'ts');
27
- currentProjectVersion++;
28
- }
29
- if (syntaxOnly) {
30
- syntaxOnlyLanguageService ??= ts.createLanguageService(host, undefined, ts.LanguageServiceMode.Syntactic);
31
- return {
32
- languageService: syntaxOnlyLanguageService,
33
- fileName: currentFileName,
34
- };
35
- }
36
- else {
37
- languageService ??= ts.createLanguageService(host);
38
- return {
39
- languageService,
40
- fileName: currentFileName,
41
- };
42
- }
43
- }
44
- exports.getLanguageService = getLanguageService;
45
- //# sourceMappingURL=syntacticLanguageService.js.map