@volar/typescript 2.0.0-alpha.8 → 2.0.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.
Files changed (40) hide show
  1. package/lib/documentRegistry.d.ts +2 -2
  2. package/lib/node/decorateLanguageService.d.ts +3 -3
  3. package/lib/node/decorateLanguageService.js +47 -42
  4. package/lib/node/decorateLanguageServiceHost.d.ts +4 -4
  5. package/lib/node/decorateLanguageServiceHost.js +15 -15
  6. package/lib/node/decorateProgram.d.ts +3 -3
  7. package/lib/node/decorateProgram.js +1 -1
  8. package/lib/node/dedupe.d.ts +1 -1
  9. package/lib/node/proxyCreateProgram.d.ts +2 -2
  10. package/lib/node/proxyCreateProgram.js +10 -13
  11. package/lib/node/transform.d.ts +7 -7
  12. package/lib/node/transform.js +12 -10
  13. package/lib/node/utils.d.ts +6 -2
  14. package/lib/node/utils.js +7 -10
  15. package/lib/protocol/createProject.d.ts +6 -3
  16. package/lib/protocol/createProject.js +95 -119
  17. package/lib/protocol/createSys.d.ts +3 -3
  18. package/lib/protocol/createSys.js +11 -11
  19. package/lib/quickstart/createAsyncLanguageServicePlugin.d.ts +3 -0
  20. package/lib/quickstart/createAsyncLanguageServicePlugin.js +89 -0
  21. package/lib/quickstart/createAsyncTSServerPlugin.d.ts +3 -0
  22. package/lib/quickstart/createAsyncTSServerPlugin.js +89 -0
  23. package/lib/quickstart/createLanguageServicePlugin.d.ts +4 -0
  24. package/lib/quickstart/createLanguageServicePlugin.js +70 -0
  25. package/lib/quickstart/createTSServerPlugin.d.ts +4 -0
  26. package/lib/quickstart/createTSServerPlugin.js +70 -0
  27. package/lib/{starters → quickstart}/runTsc.d.ts +2 -2
  28. package/lib/typescript/core.js +16 -8
  29. package/lib/typescript/path.js +42 -21
  30. package/lib/typescript/utilities.js +6 -3
  31. package/lib/utils/resolveModuleName.d.ts +3 -0
  32. package/lib/utils/resolveModuleName.js +47 -0
  33. package/package.json +4 -4
  34. package/lib/protocol/getProgram.d.ts +0 -3
  35. package/lib/protocol/getProgram.js +0 -146
  36. package/lib/starters/createAsyncTSServerPlugin.d.ts +0 -3
  37. package/lib/starters/createAsyncTSServerPlugin.js +0 -82
  38. package/lib/starters/createTSServerPlugin.d.ts +0 -7
  39. package/lib/starters/createTSServerPlugin.js +0 -60
  40. /package/lib/{starters → quickstart}/runTsc.js +0 -0
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAsyncTSServerPlugin = void 0;
4
- const decorateLanguageService_1 = require("../node/decorateLanguageService");
5
- const decorateLanguageServiceHost_1 = require("../node/decorateLanguageServiceHost");
6
- const language_core_1 = require("@volar/language-core");
7
- const createTSServerPlugin_1 = require("./createTSServerPlugin");
8
- const externalFiles = new WeakMap();
9
- function createAsyncTSServerPlugin(extensions, scriptKind, loadLanguagePlugins) {
10
- return (modules) => {
11
- const { typescript: ts } = modules;
12
- const pluginModule = {
13
- create(info) {
14
- const emptySnapshot = ts.ScriptSnapshot.fromString('');
15
- const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);
16
- const getScriptVersion = info.languageServiceHost.getScriptVersion.bind(info.languageServiceHost);
17
- const getScriptKind = info.languageServiceHost.getScriptKind?.bind(info.languageServiceHost);
18
- const getProjectVersion = info.languageServiceHost.getProjectVersion?.bind(info.languageServiceHost);
19
- let initialized = false;
20
- info.languageServiceHost.getScriptSnapshot = (fileName) => {
21
- if (!initialized && extensions.some(ext => fileName.endsWith(ext))) {
22
- return emptySnapshot;
23
- }
24
- return getScriptSnapshot(fileName);
25
- };
26
- info.languageServiceHost.getScriptVersion = (fileName) => {
27
- if (!initialized && extensions.some(ext => fileName.endsWith(ext))) {
28
- return 'initializing...';
29
- }
30
- return getScriptVersion(fileName);
31
- };
32
- if (getScriptKind) {
33
- info.languageServiceHost.getScriptKind = (fileName) => {
34
- if (!initialized && extensions.some(ext => fileName.endsWith(ext))) {
35
- return scriptKind; // TODO: bypass upstream bug
36
- }
37
- return getScriptKind(fileName);
38
- };
39
- }
40
- if (getProjectVersion) {
41
- info.languageServiceHost.getProjectVersion = () => {
42
- if (!initialized) {
43
- return getProjectVersion() + ',initializing...';
44
- }
45
- return getProjectVersion();
46
- };
47
- }
48
- loadLanguagePlugins(ts, info).then(languagePlugins => {
49
- const files = (0, language_core_1.createFileProvider)(languagePlugins, ts.sys.useCaseSensitiveFileNames, (fileName) => {
50
- const snapshot = getScriptSnapshot(fileName);
51
- if (snapshot) {
52
- files.updateSourceFile(fileName, (0, language_core_1.resolveCommonLanguageId)(fileName), snapshot);
53
- }
54
- else {
55
- files.deleteSourceFile(fileName);
56
- }
57
- });
58
- (0, decorateLanguageService_1.decorateLanguageService)(files, info.languageService);
59
- (0, decorateLanguageServiceHost_1.decorateLanguageServiceHost)(files, info.languageServiceHost, ts, extensions);
60
- info.project.markAsDirty();
61
- initialized = true;
62
- });
63
- return info.languageService;
64
- },
65
- getExternalFiles(project, updateLevel = 0) {
66
- if (updateLevel >= (1)
67
- || !externalFiles.has(project)) {
68
- const oldFiles = externalFiles.get(project);
69
- const newFiles = (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions);
70
- externalFiles.set(project, newFiles);
71
- if (oldFiles && !(0, createTSServerPlugin_1.arrayItemsEqual)(oldFiles, newFiles)) {
72
- project.refreshDiagnostics();
73
- }
74
- }
75
- return externalFiles.get(project);
76
- },
77
- };
78
- return pluginModule;
79
- };
80
- }
81
- exports.createAsyncTSServerPlugin = createAsyncTSServerPlugin;
82
- //# sourceMappingURL=createAsyncTSServerPlugin.js.map
@@ -1,7 +0,0 @@
1
- import type * as ts from 'typescript/lib/tsserverlibrary';
2
- import { LanguagePlugin } from '@volar/language-core';
3
- export declare function createTSServerPlugin(init: (ts: typeof import('typescript/lib/tsserverlibrary'), info: ts.server.PluginCreateInfo) => {
4
- languagePlugins: LanguagePlugin[];
5
- extensions: string[];
6
- }): ts.server.PluginModuleFactory;
7
- export declare function arrayItemsEqual(a: string[], b: string[]): boolean;
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arrayItemsEqual = exports.createTSServerPlugin = void 0;
4
- const decorateLanguageService_1 = require("../node/decorateLanguageService");
5
- const decorateLanguageServiceHost_1 = require("../node/decorateLanguageServiceHost");
6
- const language_core_1 = require("@volar/language-core");
7
- const externalFiles = new WeakMap();
8
- const projectExternalFileExtensions = new WeakMap();
9
- function createTSServerPlugin(init) {
10
- return (modules) => {
11
- const { typescript: ts } = modules;
12
- const pluginModule = {
13
- create(info) {
14
- const { languagePlugins, extensions } = init(ts, info);
15
- projectExternalFileExtensions.set(info.project, extensions);
16
- const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);
17
- const files = (0, language_core_1.createFileProvider)(languagePlugins, ts.sys.useCaseSensitiveFileNames, fileName => {
18
- const snapshot = getScriptSnapshot(fileName);
19
- if (snapshot) {
20
- files.updateSourceFile(fileName, (0, language_core_1.resolveCommonLanguageId)(fileName), snapshot);
21
- }
22
- else {
23
- files.deleteSourceFile(fileName);
24
- }
25
- });
26
- (0, decorateLanguageService_1.decorateLanguageService)(files, info.languageService);
27
- (0, decorateLanguageServiceHost_1.decorateLanguageServiceHost)(files, info.languageServiceHost, ts, extensions);
28
- return info.languageService;
29
- },
30
- getExternalFiles(project, updateLevel = 0) {
31
- if (updateLevel >= (1)
32
- || !externalFiles.has(project)) {
33
- const oldFiles = externalFiles.get(project);
34
- const newFiles = (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, projectExternalFileExtensions.get(project));
35
- externalFiles.set(project, newFiles);
36
- if (oldFiles && !arrayItemsEqual(oldFiles, newFiles)) {
37
- project.refreshDiagnostics();
38
- }
39
- }
40
- return externalFiles.get(project);
41
- },
42
- };
43
- return pluginModule;
44
- };
45
- }
46
- exports.createTSServerPlugin = createTSServerPlugin;
47
- function arrayItemsEqual(a, b) {
48
- if (a.length !== b.length) {
49
- return false;
50
- }
51
- const set = new Set(a);
52
- for (const file of b) {
53
- if (!set.has(file)) {
54
- return false;
55
- }
56
- }
57
- return true;
58
- }
59
- exports.arrayItemsEqual = arrayItemsEqual;
60
- //# sourceMappingURL=createTSServerPlugin.js.map
File without changes