volar-service-typescript 0.0.27-patch.1 → 0.0.28

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 (2) hide show
  1. package/index.js +42 -22
  2. package/package.json +5 -4
package/index.js CHANGED
@@ -178,8 +178,8 @@ function create(ts) {
178
178
  }
179
179
  },
180
180
  };
181
- let syntacticHostCtx = {
182
- projectVersion: 0,
181
+ const syntacticHostCtx = {
182
+ projectVersion: -1,
183
183
  document: undefined,
184
184
  fileName: '',
185
185
  fileVersion: 0,
@@ -241,24 +241,28 @@ function create(ts) {
241
241
  languageServiceHost,
242
242
  languageService,
243
243
  ts,
244
- uriToFileName: uri => {
245
- const [_virtualCode, file] = context.documents.getVirtualCodeByUri(uri);
246
- if (file) {
247
- return context.env.typescript.uriToFileName(file.id);
248
- }
249
- else {
250
- return context.env.typescript.uriToFileName(uri);
244
+ uriToFileName(uri) {
245
+ const virtualScript = getVirtualScriptByUri(uri);
246
+ if (virtualScript) {
247
+ return virtualScript.fileName;
251
248
  }
249
+ return context.env.typescript.uriToFileName(uri);
252
250
  },
253
- fileNameToUri: fileName => {
251
+ fileNameToUri(fileName) {
254
252
  const uri = context.env.typescript.fileNameToUri(fileName);
255
- const file = context.language.files.get(uri);
256
- if (file?.generated) {
257
- const script = file.generated.languagePlugin.typescript?.getScript(file.generated.code);
258
- if (script) {
259
- return context.documents.getVirtualCodeUri(uri, script.code.id);
253
+ const sourceFile = context.language.files.get(uri);
254
+ const extraScript = context.language.typescript.getExtraScript(fileName);
255
+ let virtualCode = extraScript?.code;
256
+ if (!virtualCode && sourceFile?.generated?.languagePlugin.typescript) {
257
+ const mainScript = sourceFile.generated.languagePlugin.typescript.getScript(sourceFile.generated.code);
258
+ if (mainScript) {
259
+ virtualCode = mainScript.code;
260
260
  }
261
261
  }
262
+ if (virtualCode) {
263
+ const sourceFile = context.language.files.getByVirtualCode(virtualCode);
264
+ return context.documents.getVirtualCodeUri(sourceFile.id, virtualCode.id);
265
+ }
262
266
  return uri;
263
267
  },
264
268
  getTextDocument(uri) {
@@ -497,15 +501,31 @@ function create(ts) {
497
501
  },
498
502
  };
499
503
  function isSemanticDocument(document, withJson = false) {
500
- const [virtualCode, sourceFile] = context.documents.getVirtualCodeByUri(document.uri);
501
- if (virtualCode) {
502
- return sourceFile.generated?.languagePlugin.typescript?.getScript(sourceFile.generated.code)?.code === virtualCode;
504
+ const virtualScript = getVirtualScriptByUri(document.uri);
505
+ if (virtualScript) {
506
+ return true;
503
507
  }
504
- else if (withJson) {
505
- return (0, shared_1.isTsDocument)(document) || (0, shared_1.isJsonDocument)(document);
508
+ if (withJson && (0, shared_1.isJsonDocument)(document)) {
509
+ return true;
506
510
  }
507
- else {
508
- return (0, shared_1.isTsDocument)(document);
511
+ return (0, shared_1.isTsDocument)(document);
512
+ }
513
+ function getVirtualScriptByUri(uri) {
514
+ const [virtualCode, sourceFile] = context.documents.getVirtualCodeByUri(uri);
515
+ if (virtualCode && sourceFile.generated?.languagePlugin.typescript) {
516
+ const { getScript, getExtraScripts } = sourceFile.generated?.languagePlugin.typescript;
517
+ const sourceFileName = context.env.typescript.uriToFileName(sourceFile.id);
518
+ if (getScript(sourceFile.generated.code)?.code === virtualCode) {
519
+ return {
520
+ fileName: sourceFileName,
521
+ code: virtualCode,
522
+ };
523
+ }
524
+ for (const extraScript of getExtraScripts?.(sourceFileName, sourceFile.generated.code) ?? []) {
525
+ if (extraScript.code === virtualCode) {
526
+ return extraScript;
527
+ }
528
+ }
509
529
  }
510
530
  }
511
531
  async function worker(token, callback) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volar-service-typescript",
3
- "version": "0.0.27-patch.1",
3
+ "version": "0.0.28",
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",
@@ -37,12 +37,13 @@
37
37
  "vscode-uri": "^3.0.8"
38
38
  },
39
39
  "peerDependencies": {
40
- "@volar/language-service": "~2.0.0",
41
- "@volar/typescript": "~2.0.0"
40
+ "@volar/language-service": "~2.0.1",
41
+ "@volar/typescript": "~2.0.1"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@volar/language-service": {
45
45
  "optional": true
46
46
  }
47
- }
47
+ },
48
+ "gitHead": "863d2892a08a959d8948c1a32094907cdcfd4be7"
48
49
  }