@volar/typescript 2.3.0-alpha.10 → 2.3.0-alpha.11

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.
@@ -35,7 +35,7 @@ function decorateLanguageService(language, languageService) {
35
35
  const { findReferences, findRenameLocations, getCompletionEntryDetails, getCompletionsAtPosition, getDefinitionAndBoundSpan, getDefinitionAtPosition, getFileReferences, getFormattingEditsForDocument, getFormattingEditsForRange, getFormattingEditsAfterKeystroke, getImplementationAtPosition, getLinkedEditingRangeAtPosition, getQuickInfoAtPosition, getSignatureHelpItems, getReferencesAtPosition, getSemanticDiagnostics, getSyntacticDiagnostics, getSuggestionDiagnostics, getTypeDefinitionAtPosition, getEncodedSemanticClassifications, getDocumentHighlights, getApplicableRefactors, getEditsForFileRename, getEditsForRefactor, getRenameInfo, getCodeFixesAtPosition, prepareCallHierarchy, provideCallHierarchyIncomingCalls, provideCallHierarchyOutgoingCalls, provideInlayHints, organizeImports, } = languageService;
36
36
  languageService.getFormattingEditsForDocument = (filePath, options) => {
37
37
  const fileName = filePath.replace(windowsPathReg, '/');
38
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
38
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
39
39
  if (targetScript?.associatedOnly) {
40
40
  return [];
41
41
  }
@@ -46,7 +46,7 @@ function decorateLanguageService(language, languageService) {
46
46
  }
47
47
  const edits = getFormattingEditsForDocument(targetScript.id, options);
48
48
  return edits
49
- .map(edit => (0, transform_1.transformTextChange)(targetScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
49
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
50
50
  .filter(utils_1.notEmpty);
51
51
  }
52
52
  else {
@@ -55,7 +55,7 @@ function decorateLanguageService(language, languageService) {
55
55
  };
56
56
  languageService.getFormattingEditsForRange = (filePath, start, end, options) => {
57
57
  const fileName = filePath.replace(windowsPathReg, '/');
58
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
58
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
59
59
  if (targetScript?.associatedOnly) {
60
60
  return [];
61
61
  }
@@ -65,7 +65,7 @@ function decorateLanguageService(language, languageService) {
65
65
  if (generateStart !== undefined && generateEnd !== undefined) {
66
66
  const edits = getFormattingEditsForRange(targetScript.id, generateStart, generateEnd, options);
67
67
  return edits
68
- .map(edit => (0, transform_1.transformTextChange)(targetScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
68
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
69
69
  .filter(utils_1.notEmpty);
70
70
  }
71
71
  return [];
@@ -76,7 +76,7 @@ function decorateLanguageService(language, languageService) {
76
76
  };
77
77
  languageService.getFormattingEditsAfterKeystroke = (filePath, position, key, options) => {
78
78
  const fileName = filePath.replace(windowsPathReg, '/');
79
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
79
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
80
80
  if (targetScript?.associatedOnly) {
81
81
  return [];
82
82
  }
@@ -85,7 +85,7 @@ function decorateLanguageService(language, languageService) {
85
85
  if (generatePosition !== undefined) {
86
86
  const edits = getFormattingEditsAfterKeystroke(targetScript.id, generatePosition, key, options);
87
87
  return edits
88
- .map(edit => (0, transform_1.transformTextChange)(targetScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
88
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
89
89
  .filter(utils_1.notEmpty);
90
90
  }
91
91
  return [];
@@ -100,7 +100,7 @@ function decorateLanguageService(language, languageService) {
100
100
  };
101
101
  languageService.getLinkedEditingRangeAtPosition = (filePath, position) => {
102
102
  const fileName = filePath.replace(windowsPathReg, '/');
103
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
103
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
104
104
  if (targetScript?.associatedOnly) {
105
105
  return undefined;
106
106
  }
@@ -111,7 +111,7 @@ function decorateLanguageService(language, languageService) {
111
111
  if (info) {
112
112
  return {
113
113
  ranges: info.ranges
114
- .map(span => (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, span, language_core_1.isLinkedEditingEnabled)?.[1])
114
+ .map(span => (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isLinkedEditingEnabled)?.[1])
115
115
  .filter(utils_1.notEmpty),
116
116
  wordPattern: info.wordPattern,
117
117
  };
@@ -175,7 +175,7 @@ function decorateLanguageService(language, languageService) {
175
175
  languageService.provideCallHierarchyOutgoingCalls = (filePath, position) => {
176
176
  let calls = [];
177
177
  const fileName = filePath.replace(windowsPathReg, '/');
178
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
178
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
179
179
  if (targetScript?.associatedOnly) {
180
180
  return [];
181
181
  }
@@ -193,7 +193,7 @@ function decorateLanguageService(language, languageService) {
193
193
  const to = (0, transform_1.transformCallHierarchyItem)(language, call.to, language_core_1.isCallHierarchyEnabled);
194
194
  const fromSpans = call.fromSpans
195
195
  .map(span => serviceScript
196
- ? (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, span, language_core_1.isCallHierarchyEnabled)?.[1]
196
+ ? (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isCallHierarchyEnabled)?.[1]
197
197
  : span)
198
198
  .filter(utils_1.notEmpty);
199
199
  return {
@@ -208,7 +208,7 @@ function decorateLanguageService(language, languageService) {
208
208
  };
209
209
  languageService.getQuickInfoAtPosition = (filePath, position) => {
210
210
  const fileName = filePath.replace(windowsPathReg, '/');
211
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
211
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
212
212
  if (targetScript?.associatedOnly) {
213
213
  return undefined;
214
214
  }
@@ -217,7 +217,7 @@ function decorateLanguageService(language, languageService) {
217
217
  for (const [generatePosition] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, targetScript, position, language_core_1.isHoverEnabled)) {
218
218
  const info = getQuickInfoAtPosition(targetScript.id, generatePosition);
219
219
  if (info) {
220
- const textSpan = (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, info.textSpan, language_core_1.isHoverEnabled)?.[1];
220
+ const textSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.textSpan, language_core_1.isHoverEnabled)?.[1];
221
221
  if (textSpan) {
222
222
  infos.push({
223
223
  ...info,
@@ -271,7 +271,7 @@ function decorateLanguageService(language, languageService) {
271
271
  };
272
272
  languageService.getSignatureHelpItems = (filePath, position, options) => {
273
273
  const fileName = filePath.replace(windowsPathReg, '/');
274
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
274
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
275
275
  if (targetScript?.associatedOnly) {
276
276
  return undefined;
277
277
  }
@@ -280,7 +280,7 @@ function decorateLanguageService(language, languageService) {
280
280
  if (generatePosition !== undefined) {
281
281
  const result = getSignatureHelpItems(targetScript.id, generatePosition, options);
282
282
  if (result) {
283
- const applicableSpan = (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, result.applicableSpan, language_core_1.isSignatureHelpEnabled)?.[1];
283
+ const applicableSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.applicableSpan, language_core_1.isSignatureHelpEnabled)?.[1];
284
284
  if (applicableSpan) {
285
285
  return {
286
286
  ...result,
@@ -378,7 +378,7 @@ function decorateLanguageService(language, languageService) {
378
378
  };
379
379
  languageService.getRenameInfo = (filePath, position, options) => {
380
380
  const fileName = filePath.replace(windowsPathReg, '/');
381
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
381
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
382
382
  if (targetScript?.associatedOnly) {
383
383
  return {
384
384
  canRename: false,
@@ -390,7 +390,7 @@ function decorateLanguageService(language, languageService) {
390
390
  for (const [generateOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, targetScript, position, language_core_1.isRenameEnabled)) {
391
391
  const info = getRenameInfo(targetScript.id, generateOffset, options);
392
392
  if (info.canRename) {
393
- const span = (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, info.triggerSpan, language_core_1.isRenameEnabled)?.[1];
393
+ const span = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.triggerSpan, language_core_1.isRenameEnabled)?.[1];
394
394
  if (span) {
395
395
  info.triggerSpan = span;
396
396
  return info;
@@ -437,7 +437,7 @@ function decorateLanguageService(language, languageService) {
437
437
  };
438
438
  languageService.getEncodedSemanticClassifications = (filePath, span, format) => {
439
439
  const fileName = filePath.replace(windowsPathReg, '/');
440
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
440
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
441
441
  if (targetScript?.associatedOnly) {
442
442
  return {
443
443
  spans: [],
@@ -465,8 +465,8 @@ function decorateLanguageService(language, languageService) {
465
465
  const result = getEncodedSemanticClassifications(targetScript.id, { start, length: end - start }, format);
466
466
  const spans = [];
467
467
  for (let i = 0; i < result.spans.length; i += 3) {
468
- for (const sourceStart of (0, transform_1.toSourceOffsets)(targetScript, language, serviceScript, result.spans[i], language_core_1.isSemanticTokensEnabled)) {
469
- for (const sourceEnd of (0, transform_1.toSourceOffsets)(targetScript, language, serviceScript, result.spans[i] + result.spans[i + 1], language_core_1.isSemanticTokensEnabled)) {
468
+ for (const sourceStart of (0, transform_1.toSourceOffsets)(sourceScript, language, serviceScript, result.spans[i], language_core_1.isSemanticTokensEnabled)) {
469
+ for (const sourceEnd of (0, transform_1.toSourceOffsets)(sourceScript, language, serviceScript, result.spans[i] + result.spans[i + 1], language_core_1.isSemanticTokensEnabled)) {
470
470
  if (sourceStart[0] === sourceEnd[0] && sourceEnd[1] >= sourceStart[1]) {
471
471
  spans.push(sourceStart[1], sourceEnd[1] - sourceStart[1], result.spans[i + 2]);
472
472
  break;
@@ -486,32 +486,32 @@ function decorateLanguageService(language, languageService) {
486
486
  };
487
487
  languageService.getSyntacticDiagnostics = filePath => {
488
488
  const fileName = filePath.replace(windowsPathReg, '/');
489
- const [_serviceScript, targetScript] = (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(fileName)
494
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, languageService.getProgram(), false))
494
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, languageService.getProgram(), false))
495
495
  .filter(utils_1.notEmpty);
496
496
  };
497
497
  languageService.getSemanticDiagnostics = filePath => {
498
498
  const fileName = filePath.replace(windowsPathReg, '/');
499
- const [_serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
499
+ const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
500
500
  if (targetScript?.associatedOnly) {
501
501
  return [];
502
502
  }
503
503
  return getSemanticDiagnostics(fileName)
504
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, languageService.getProgram(), false))
504
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, languageService.getProgram(), false))
505
505
  .filter(utils_1.notEmpty);
506
506
  };
507
507
  languageService.getSuggestionDiagnostics = filePath => {
508
508
  const fileName = filePath.replace(windowsPathReg, '/');
509
- const [_serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
509
+ const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
510
510
  if (targetScript?.associatedOnly) {
511
511
  return [];
512
512
  }
513
513
  return getSuggestionDiagnostics(fileName)
514
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, languageService.getProgram(), false))
514
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, languageService.getProgram(), false))
515
515
  .filter(utils_1.notEmpty);
516
516
  };
517
517
  languageService.getDefinitionAndBoundSpan = (filePath, position) => {
@@ -627,7 +627,7 @@ function decorateLanguageService(language, languageService) {
627
627
  };
628
628
  languageService.getCompletionsAtPosition = (filePath, position, options, formattingSettings) => {
629
629
  const fileName = filePath.replace(windowsPathReg, '/');
630
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
630
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
631
631
  if (targetScript?.associatedOnly) {
632
632
  return undefined;
633
633
  }
@@ -642,10 +642,10 @@ function decorateLanguageService(language, languageService) {
642
642
  result.entries = result.entries.filter(entry => !!entry.sourceDisplay);
643
643
  }
644
644
  for (const entry of result.entries) {
645
- entry.replacementSpan = entry.replacementSpan && (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, entry.replacementSpan, language_core_1.isCompletionEnabled)?.[1];
645
+ entry.replacementSpan = entry.replacementSpan && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, entry.replacementSpan, language_core_1.isCompletionEnabled)?.[1];
646
646
  }
647
647
  result.optionalReplacementSpan = result.optionalReplacementSpan
648
- && (0, transform_1.transformTextSpan)(targetScript, language, serviceScript, result.optionalReplacementSpan, language_core_1.isCompletionEnabled)?.[1];
648
+ && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.optionalReplacementSpan, language_core_1.isCompletionEnabled)?.[1];
649
649
  const isAdditional = typeof mapping.data.completion === 'object' && mapping.data.completion.isAdditional;
650
650
  if (isAdditional) {
651
651
  results.push(result);
@@ -692,7 +692,7 @@ function decorateLanguageService(language, languageService) {
692
692
  };
693
693
  languageService.provideInlayHints = (filePath, span, preferences) => {
694
694
  const fileName = filePath.replace(windowsPathReg, '/');
695
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
695
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
696
696
  if (targetScript?.associatedOnly) {
697
697
  return [];
698
698
  }
@@ -718,7 +718,7 @@ function decorateLanguageService(language, languageService) {
718
718
  const result = provideInlayHints(targetScript.id, { start, length: end - start }, preferences);
719
719
  const hints = [];
720
720
  for (const hint of result) {
721
- const sourcePosition = (0, transform_1.toSourceOffset)(targetScript, language, serviceScript, hint.position, language_core_1.isInlayHintsEnabled);
721
+ const sourcePosition = (0, transform_1.toSourceOffset)(sourceScript, language, serviceScript, hint.position, language_core_1.isInlayHintsEnabled);
722
722
  if (sourcePosition !== undefined) {
723
723
  hints.push({
724
724
  ...hint,
@@ -29,10 +29,10 @@ function decorateProgram(language, program) {
29
29
  .filter(utils_1.notEmpty);
30
30
  }
31
31
  else {
32
- const [_serviceScript, targetScript] = (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
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, program, true))
35
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, program, true))
36
36
  .filter(utils_1.notEmpty);
37
37
  }
38
38
  };
@@ -43,10 +43,10 @@ function decorateProgram(language, program) {
43
43
  .filter(utils_1.notEmpty);
44
44
  }
45
45
  else {
46
- const [_serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
46
+ const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
47
47
  const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
48
48
  return getSemanticDiagnostics(actualSourceFile, cancellationToken)
49
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, program, true))
49
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, program, true))
50
50
  .filter(utils_1.notEmpty);
51
51
  }
52
52
  };
@@ -63,10 +63,10 @@ function decorateProgram(language, program) {
63
63
  .filter(utils_1.notEmpty);
64
64
  }
65
65
  else {
66
- const [_serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
66
+ const [_serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
67
67
  const actualSourceFile = targetScript ? program.getSourceFile(targetScript.id) : sourceFile;
68
68
  return getBindAndCheckDiagnostics(actualSourceFile, cancellationToken)
69
- .map(d => (0, transform_1.transformDiagnostic)(targetScript, language, d, program, true))
69
+ .map(d => (0, transform_1.transformDiagnostic)(sourceScript, language, d, program, true))
70
70
  .filter(utils_1.notEmpty);
71
71
  }
72
72
  };
@@ -2,7 +2,7 @@ import type { CodeInformation, SourceScript, TypeScriptServiceScript } from '@vo
2
2
  import { Language } from '@volar/language-core';
3
3
  import type * as ts from 'typescript';
4
4
  export declare function transformCallHierarchyItem(language: Language<string>, item: ts.CallHierarchyItem, filter: (data: CodeInformation) => boolean): ts.CallHierarchyItem;
5
- export declare function transformDiagnostic<T extends ts.Diagnostic>(targetScript: SourceScript<string> | undefined, language: Language<string>, diagnostic: T, program: ts.Program | undefined, isTsc: boolean): T | undefined;
5
+ export declare function transformDiagnostic<T extends ts.Diagnostic>(sourceScript: SourceScript<string> | undefined, language: Language<string>, diagnostic: T, program: ts.Program | undefined, isTsc: boolean): T | undefined;
6
6
  export declare function fillSourceFileText(language: Language<string>, sourceFile: ts.SourceFile): void;
7
7
  export declare function transformFileTextChanges(language: Language<string>, changes: readonly ts.FileTextChanges[], filter: (data: CodeInformation) => boolean): ts.FileTextChanges[];
8
8
  export declare function transformDocumentSpan<T extends ts.DocumentSpan>(language: Language<string>, documentSpan: T, filter: (data: CodeInformation) => boolean, shouldFallback?: boolean): T | undefined;
@@ -10,10 +10,10 @@ export declare function transformSpan(language: Language<string>, fileName: stri
10
10
  fileName: string;
11
11
  textSpan: ts.TextSpan;
12
12
  } | undefined;
13
- export declare function transformTextChange(targetScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textChange: ts.TextChange, filter: (data: CodeInformation) => boolean): [string, ts.TextChange] | undefined;
14
- export declare function transformTextSpan(targetScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textSpan: ts.TextSpan, filter: (data: CodeInformation) => boolean): [string, ts.TextSpan] | undefined;
15
- export declare function toSourceOffset(targetScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): [fileName: string, offset: number] | undefined;
16
- export declare function toSourceOffsets(targetScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): Generator<[fileName: string, offset: number]>;
13
+ export declare function transformTextChange(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textChange: ts.TextChange, filter: (data: CodeInformation) => boolean): [string, ts.TextChange] | undefined;
14
+ export declare function transformTextSpan(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, textSpan: ts.TextSpan, filter: (data: CodeInformation) => boolean): [string, ts.TextSpan] | undefined;
15
+ export declare function toSourceOffset(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): [fileName: string, offset: number] | undefined;
16
+ export declare function toSourceOffsets(sourceScript: SourceScript<string> | undefined, language: Language<string>, serviceScript: TypeScriptServiceScript, position: number, filter: (data: CodeInformation) => boolean): Generator<[fileName: string, offset: number]>;
17
17
  export declare function toGeneratedOffset(language: Language, serviceScript: TypeScriptServiceScript, sourceScript: SourceScript<string>, position: number, filter: (data: CodeInformation) => boolean): number | undefined;
18
18
  export declare function toGeneratedOffsets(language: Language, serviceScript: TypeScriptServiceScript, sourceScript: SourceScript<string>, position: number, filter: (data: CodeInformation) => boolean): Generator<readonly [number, import("@volar/language-core").Mapping<CodeInformation>], void, unknown>;
19
19
  export declare function getMappingOffset(language: Language, serviceScript: TypeScriptServiceScript): number;
@@ -16,7 +16,7 @@ function transformCallHierarchyItem(language, item, filter) {
16
16
  };
17
17
  }
18
18
  exports.transformCallHierarchyItem = transformCallHierarchyItem;
19
- function transformDiagnostic(targetScript, language, diagnostic, program, isTsc) {
19
+ function transformDiagnostic(sourceScript, language, diagnostic, program, isTsc) {
20
20
  if (!transformedDiagnostics.has(diagnostic)) {
21
21
  transformedDiagnostics.set(diagnostic, undefined);
22
22
  const { relatedInformation } = diagnostic;
@@ -30,7 +30,7 @@ function transformDiagnostic(targetScript, language, diagnostic, program, isTsc)
30
30
  && diagnostic.length !== undefined) {
31
31
  const [serviceScript] = (0, utils_1.getServiceScript)(language, diagnostic.file.fileName);
32
32
  if (serviceScript) {
33
- const [sourceSpanFileName, sourceSpan] = transformTextSpan(targetScript, language, serviceScript, {
33
+ const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, {
34
34
  start: diagnostic.start,
35
35
  length: diagnostic.length
36
36
  }, language_core_1.shouldReportDiagnostics) ?? [];
@@ -68,10 +68,11 @@ function fillSourceFileText(language, sourceFile) {
68
68
  return;
69
69
  }
70
70
  transformedSourceFile.add(sourceFile);
71
- const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
71
+ const [serviceScript] = (0, utils_1.getServiceScript)(language, sourceFile.fileName);
72
72
  if (serviceScript && !serviceScript.preventLeadingOffset) {
73
- sourceFile.text = targetScript.snapshot.getText(0, targetScript.snapshot.getLength())
74
- + sourceFile.text.substring(targetScript.snapshot.getLength());
73
+ const sourceScript = language.scripts.fromVirtualCode(serviceScript.code);
74
+ sourceFile.text = sourceScript.snapshot.getText(0, sourceScript.snapshot.getLength())
75
+ + sourceFile.text.substring(sourceScript.snapshot.getLength());
75
76
  }
76
77
  }
77
78
  exports.fillSourceFileText = fillSourceFileText;
@@ -156,8 +157,8 @@ function transformSpan(language, fileName, textSpan, filter) {
156
157
  }
157
158
  }
158
159
  exports.transformSpan = transformSpan;
159
- function transformTextChange(targetScript, language, serviceScript, textChange, filter) {
160
- const [sourceSpanFileName, sourceSpan] = transformTextSpan(targetScript, language, serviceScript, textChange.span, filter) ?? [];
160
+ function transformTextChange(sourceScript, language, serviceScript, textChange, filter) {
161
+ const [sourceSpanFileName, sourceSpan] = transformTextSpan(sourceScript, language, serviceScript, textChange.span, filter) ?? [];
161
162
  if (sourceSpan && sourceSpanFileName) {
162
163
  return [sourceSpanFileName, {
163
164
  newText: textChange.newText,
@@ -167,11 +168,11 @@ function transformTextChange(targetScript, language, serviceScript, textChange,
167
168
  return undefined;
168
169
  }
169
170
  exports.transformTextChange = transformTextChange;
170
- function transformTextSpan(targetScript, language, serviceScript, textSpan, filter) {
171
+ function transformTextSpan(sourceScript, language, serviceScript, textSpan, filter) {
171
172
  const start = textSpan.start;
172
173
  const end = textSpan.start + textSpan.length;
173
- for (const sourceStart of toSourceOffsets(targetScript, language, serviceScript, start, filter)) {
174
- for (const sourceEnd of toSourceOffsets(targetScript, language, serviceScript, end, filter)) {
174
+ for (const sourceStart of toSourceOffsets(sourceScript, language, serviceScript, start, filter)) {
175
+ for (const sourceEnd of toSourceOffsets(sourceScript, language, serviceScript, end, filter)) {
175
176
  if (sourceStart[0] === sourceEnd[0]
176
177
  && sourceEnd[1] >= sourceStart[1]) {
177
178
  return [sourceStart[0], {
@@ -183,18 +184,18 @@ function transformTextSpan(targetScript, language, serviceScript, textSpan, filt
183
184
  }
184
185
  }
185
186
  exports.transformTextSpan = transformTextSpan;
186
- function toSourceOffset(targetScript, language, serviceScript, position, filter) {
187
- for (const source of toSourceOffsets(targetScript, language, serviceScript, position, filter)) {
187
+ function toSourceOffset(sourceScript, language, serviceScript, position, filter) {
188
+ for (const source of toSourceOffsets(sourceScript, language, serviceScript, position, filter)) {
188
189
  return source;
189
190
  }
190
191
  }
191
192
  exports.toSourceOffset = toSourceOffset;
192
- function* toSourceOffsets(targetScript, language, serviceScript, position, filter) {
193
- if (targetScript) {
194
- const map = language.maps.get(serviceScript.code, targetScript);
193
+ function* toSourceOffsets(sourceScript, language, serviceScript, position, filter) {
194
+ if (sourceScript) {
195
+ const map = language.maps.get(serviceScript.code, sourceScript);
195
196
  for (const [sourceOffset, mapping] of map.getSourceOffsets(position - getMappingOffset(language, serviceScript))) {
196
197
  if (filter(mapping.data)) {
197
- yield [targetScript.id, sourceOffset];
198
+ yield [sourceScript.id, sourceOffset];
198
199
  }
199
200
  }
200
201
  }
@@ -1,3 +1,3 @@
1
1
  import type { Language, SourceScript, TypeScriptServiceScript } from '@volar/language-core';
2
2
  export declare function notEmpty<T>(value: T | null | undefined): value is T;
3
- export declare function getServiceScript(language: Language<string>, fileName: string): [serviceService: TypeScriptServiceScript, targetScript: SourceScript<string>] | [undefined, SourceScript<string>] | [undefined, undefined];
3
+ export declare function getServiceScript(language: Language<string>, fileName: string): [serviceScript: TypeScriptServiceScript, targetScript: SourceScript<string>, sourceScript: SourceScript<string>] | [serviceScript: undefined, sourceScript: SourceScript<string>, sourceScript: SourceScript<string>] | [serviceScript: undefined, sourceScript: undefined, targetScript: undefined];
package/lib/node/utils.js CHANGED
@@ -13,21 +13,21 @@ function getServiceScript(language, fileName) {
13
13
  if (targetScript?.generated) {
14
14
  const serviceScript = targetScript.generated.languagePlugin.typescript?.getServiceScript(targetScript.generated.root);
15
15
  if (serviceScript) {
16
- return [serviceScript, targetScript];
16
+ return [serviceScript, sourceScript, targetScript];
17
17
  }
18
18
  }
19
19
  }
20
20
  }
21
21
  if (sourceScript?.associatedOnly) {
22
- return [undefined, sourceScript];
22
+ return [undefined, sourceScript, sourceScript];
23
23
  }
24
24
  if (sourceScript?.generated) {
25
25
  const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
26
26
  if (serviceScript) {
27
- return [serviceScript, sourceScript];
27
+ return [serviceScript, sourceScript, sourceScript];
28
28
  }
29
29
  }
30
- return [undefined, undefined];
30
+ return [undefined, undefined, undefined];
31
31
  }
32
32
  exports.getServiceScript = getServiceScript;
33
33
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/typescript",
3
- "version": "2.3.0-alpha.10",
3
+ "version": "2.3.0-alpha.11",
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.10",
15
+ "@volar/language-core": "2.3.0-alpha.11",
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.10"
22
+ "@volar/language-service": "2.3.0-alpha.11"
23
23
  },
24
- "gitHead": "44fffdc323ca3ff55818a8656a2726867df53a76"
24
+ "gitHead": "c83f835629496d3a4cc38f4b789bb676d07a2118"
25
25
  }