@volar/typescript 2.3.0-alpha.13 → 2.3.0-alpha.15

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.
@@ -486,36 +486,36 @@ function decorateLanguageService(language, languageService) {
486
486
  };
487
487
  languageService.getSyntacticDiagnostics = filePath => {
488
488
  const fileName = filePath.replace(windowsPathReg, '/');
489
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
489
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
490
490
  if (targetScript?.associatedOnly) {
491
491
  return [];
492
492
  }
493
493
  return getSyntacticDiagnostics(targetScript?.id ?? fileName)
494
494
  .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
495
495
  .filter(utils_1.notEmpty)
496
- .filter(d => language.scripts.get(d.file.fileName) === sourceScript);
496
+ .filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);
497
497
  };
498
498
  languageService.getSemanticDiagnostics = filePath => {
499
499
  const fileName = filePath.replace(windowsPathReg, '/');
500
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
500
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
501
501
  if (targetScript?.associatedOnly) {
502
502
  return [];
503
503
  }
504
504
  return getSemanticDiagnostics(targetScript?.id ?? fileName)
505
505
  .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
506
506
  .filter(utils_1.notEmpty)
507
- .filter(d => !d.file || language.scripts.get(d.file.fileName) === sourceScript);
507
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
508
508
  };
509
509
  languageService.getSuggestionDiagnostics = filePath => {
510
510
  const fileName = filePath.replace(windowsPathReg, '/');
511
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
511
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
512
512
  if (targetScript?.associatedOnly) {
513
513
  return [];
514
514
  }
515
515
  return getSuggestionDiagnostics(targetScript?.id ?? fileName)
516
516
  .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
517
517
  .filter(utils_1.notEmpty)
518
- .filter(d => !d.file || language.scripts.get(d.file.fileName) === sourceScript);
518
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
519
519
  };
520
520
  languageService.getDefinitionAndBoundSpan = (filePath, position) => {
521
521
  const fileName = filePath.replace(windowsPathReg, '/');
@@ -29,12 +29,12 @@ function decorateProgram(language, program) {
29
29
  .filter(utils_1.notEmpty);
30
30
  }
31
31
  else {
32
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
32
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
33
33
  const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
34
34
  return getSyntacticDiagnostics(actualSourceFile, cancellationToken)
35
35
  .map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
36
36
  .filter(utils_1.notEmpty)
37
- .filter(d => !d.file || language.scripts.get(d.file.fileName) === sourceScript);
37
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
38
38
  }
39
39
  };
40
40
  program.getSemanticDiagnostics = (sourceFile, cancellationToken) => {
@@ -44,12 +44,12 @@ function decorateProgram(language, program) {
44
44
  .filter(utils_1.notEmpty);
45
45
  }
46
46
  else {
47
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
47
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
48
48
  const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
49
49
  return getSemanticDiagnostics(actualSourceFile, cancellationToken)
50
50
  .map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
51
51
  .filter(utils_1.notEmpty)
52
- .filter(d => !d.file || language.scripts.get(d.file.fileName) === sourceScript);
52
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
53
53
  }
54
54
  };
55
55
  program.getGlobalDiagnostics = cancellationToken => {
@@ -65,12 +65,12 @@ function decorateProgram(language, program) {
65
65
  .filter(utils_1.notEmpty);
66
66
  }
67
67
  else {
68
- const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
68
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
69
69
  const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
70
70
  return getBindAndCheckDiagnostics(actualSourceFile, cancellationToken)
71
71
  .map(d => (0, transform_1.transformDiagnostic)(language, d, program, true))
72
72
  .filter(utils_1.notEmpty)
73
- .filter(d => language.scripts.get(d.file.fileName) === sourceScript);
73
+ .filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);
74
74
  }
75
75
  };
76
76
  // fix https://github.com/vuejs/language-tools/issues/4099 with `incremental`
@@ -6,18 +6,15 @@ const common_1 = require("../common");
6
6
  const decorateLanguageService_1 = require("../node/decorateLanguageService");
7
7
  const decorateLanguageServiceHost_1 = require("../node/decorateLanguageServiceHost");
8
8
  const createLanguageServicePlugin_1 = require("./createLanguageServicePlugin");
9
- const externalFiles = new WeakMap();
10
- const decoratedLanguageServices = new WeakSet();
11
- const decoratedLanguageServiceHosts = new WeakSet();
12
9
  function createAsyncLanguageServicePlugin(extensions, scriptKind, create) {
13
10
  return modules => {
14
11
  const { typescript: ts } = modules;
15
12
  const pluginModule = {
16
13
  create(info) {
17
- if (!decoratedLanguageServices.has(info.languageService)
18
- && !decoratedLanguageServiceHosts.has(info.languageServiceHost)) {
19
- decoratedLanguageServices.add(info.languageService);
20
- decoratedLanguageServiceHosts.add(info.languageServiceHost);
14
+ if (!createLanguageServicePlugin_1.decoratedLanguageServices.has(info.languageService)
15
+ && !createLanguageServicePlugin_1.decoratedLanguageServiceHosts.has(info.languageServiceHost)) {
16
+ createLanguageServicePlugin_1.decoratedLanguageServices.add(info.languageService);
17
+ createLanguageServicePlugin_1.decoratedLanguageServiceHosts.add(info.languageServiceHost);
21
18
  const emptySnapshot = ts.ScriptSnapshot.fromString('');
22
19
  const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);
23
20
  const getScriptVersion = info.languageServiceHost.getScriptVersion.bind(info.languageServiceHost);
@@ -82,15 +79,15 @@ function createAsyncLanguageServicePlugin(extensions, scriptKind, create) {
82
79
  },
83
80
  getExternalFiles(project, updateLevel = 0) {
84
81
  if (updateLevel >= (1)
85
- || !externalFiles.has(project)) {
86
- const oldFiles = externalFiles.get(project);
82
+ || !createLanguageServicePlugin_1.externalFiles.has(project)) {
83
+ const oldFiles = createLanguageServicePlugin_1.externalFiles.get(project);
87
84
  const newFiles = extensions.length ? (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions) : [];
88
- externalFiles.set(project, newFiles);
85
+ createLanguageServicePlugin_1.externalFiles.set(project, newFiles);
89
86
  if (oldFiles && !(0, createLanguageServicePlugin_1.arrayItemsEqual)(oldFiles, newFiles)) {
90
87
  project.refreshDiagnostics();
91
88
  }
92
89
  }
93
- return externalFiles.get(project);
90
+ return createLanguageServicePlugin_1.externalFiles.get(project);
94
91
  },
95
92
  };
96
93
  return pluginModule;
@@ -1,5 +1,9 @@
1
1
  import { Language, LanguagePlugin } from '@volar/language-core';
2
2
  import type * as ts from 'typescript';
3
+ export declare const externalFiles: WeakMap<ts.server.Project, string[]>;
4
+ export declare const projectExternalFileExtensions: WeakMap<ts.server.Project, string[]>;
5
+ export declare const decoratedLanguageServices: WeakSet<ts.LanguageService>;
6
+ export declare const decoratedLanguageServiceHosts: WeakSet<ts.LanguageServiceHost>;
3
7
  export declare function createLanguageServicePlugin(create: (ts: typeof import('typescript'), info: ts.server.PluginCreateInfo) => {
4
8
  languagePlugins: LanguagePlugin<string>[];
5
9
  setup?: (language: Language<string>) => void;
@@ -1,28 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arrayItemsEqual = exports.createLanguageServicePlugin = void 0;
3
+ exports.arrayItemsEqual = exports.createLanguageServicePlugin = exports.decoratedLanguageServiceHosts = exports.decoratedLanguageServices = exports.projectExternalFileExtensions = exports.externalFiles = void 0;
4
4
  const language_core_1 = require("@volar/language-core");
5
5
  const common_1 = require("../common");
6
6
  const decorateLanguageService_1 = require("../node/decorateLanguageService");
7
7
  const decorateLanguageServiceHost_1 = require("../node/decorateLanguageServiceHost");
8
- const externalFiles = new WeakMap();
9
- const projectExternalFileExtensions = new WeakMap();
10
- const decoratedLanguageServices = new WeakSet();
11
- const decoratedLanguageServiceHosts = new WeakSet();
8
+ exports.externalFiles = new WeakMap();
9
+ exports.projectExternalFileExtensions = new WeakMap();
10
+ exports.decoratedLanguageServices = new WeakSet();
11
+ exports.decoratedLanguageServiceHosts = new WeakSet();
12
12
  function createLanguageServicePlugin(create) {
13
13
  return modules => {
14
14
  const { typescript: ts } = modules;
15
15
  const pluginModule = {
16
16
  create(info) {
17
- if (!decoratedLanguageServices.has(info.languageService)
18
- && !decoratedLanguageServiceHosts.has(info.languageServiceHost)) {
19
- decoratedLanguageServices.add(info.languageService);
20
- decoratedLanguageServiceHosts.add(info.languageServiceHost);
17
+ if (!exports.decoratedLanguageServices.has(info.languageService)
18
+ && !exports.decoratedLanguageServiceHosts.has(info.languageServiceHost)) {
19
+ exports.decoratedLanguageServices.add(info.languageService);
20
+ exports.decoratedLanguageServiceHosts.add(info.languageServiceHost);
21
21
  const { languagePlugins, setup } = create(ts, info);
22
22
  const extensions = languagePlugins
23
23
  .map(plugin => plugin.typescript?.extraFileExtensions.map(ext => '.' + ext.extension) ?? [])
24
24
  .flat();
25
- projectExternalFileExtensions.set(info.project, extensions);
25
+ exports.projectExternalFileExtensions.set(info.project, extensions);
26
26
  const getScriptSnapshot = info.languageServiceHost.getScriptSnapshot.bind(info.languageServiceHost);
27
27
  const getScriptVersion = info.languageServiceHost.getScriptVersion.bind(info.languageServiceHost);
28
28
  const syncedScriptVersions = new language_core_1.FileMap(ts.sys.useCaseSensitiveFileNames);
@@ -51,16 +51,16 @@ function createLanguageServicePlugin(create) {
51
51
  },
52
52
  getExternalFiles(project, updateLevel = 0) {
53
53
  if (updateLevel >= (1)
54
- || !externalFiles.has(project)) {
55
- const oldFiles = externalFiles.get(project);
56
- const extensions = projectExternalFileExtensions.get(project);
54
+ || !exports.externalFiles.has(project)) {
55
+ const oldFiles = exports.externalFiles.get(project);
56
+ const extensions = exports.projectExternalFileExtensions.get(project);
57
57
  const newFiles = extensions?.length ? (0, decorateLanguageServiceHost_1.searchExternalFiles)(ts, project, extensions) : [];
58
- externalFiles.set(project, newFiles);
58
+ exports.externalFiles.set(project, newFiles);
59
59
  if (oldFiles && !arrayItemsEqual(oldFiles, newFiles)) {
60
60
  project.refreshDiagnostics();
61
61
  }
62
62
  }
63
- return externalFiles.get(project);
63
+ return exports.externalFiles.get(project);
64
64
  },
65
65
  };
66
66
  return pluginModule;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/typescript",
3
- "version": "2.3.0-alpha.13",
3
+ "version": "2.3.0-alpha.15",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -12,14 +12,14 @@
12
12
  "directory": "packages/typescript"
13
13
  },
14
14
  "dependencies": {
15
- "@volar/language-core": "2.3.0-alpha.13",
15
+ "@volar/language-core": "2.3.0-alpha.15",
16
16
  "path-browserify": "^1.0.1",
17
17
  "vscode-uri": "^3.0.8"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/node": "latest",
21
21
  "@types/path-browserify": "latest",
22
- "@volar/language-service": "2.3.0-alpha.13"
22
+ "@volar/language-service": "2.3.0-alpha.15"
23
23
  },
24
- "gitHead": "4effe4689ac845b17b7c821d50deda62c124f23b"
24
+ "gitHead": "25ab3f45d1c74f52904c703378b04a6ecbda9535"
25
25
  }