@volar/typescript 2.3.0-alpha.8 → 2.3.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.
@@ -11,9 +11,9 @@ function decorateLanguageService(language, languageService) {
11
11
  const { getNavigationTree, getOutliningSpans, } = languageService;
12
12
  languageService.getNavigationTree = filePath => {
13
13
  const fileName = filePath.replace(windowsPathReg, '/');
14
- const [serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
15
- if (serviceScript || sourceScript?.associatedOnly) {
16
- const tree = getNavigationTree(sourceScript.id);
14
+ const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
15
+ if (serviceScript || targetScript?.associatedOnly) {
16
+ const tree = getNavigationTree(targetScript.id);
17
17
  tree.childItems = undefined;
18
18
  return tree;
19
19
  }
@@ -23,8 +23,8 @@ function decorateLanguageService(language, languageService) {
23
23
  };
24
24
  languageService.getOutliningSpans = filePath => {
25
25
  const fileName = filePath.replace(windowsPathReg, '/');
26
- const [serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
27
- if (serviceScript || sourceScript?.associatedOnly) {
26
+ const [serviceScript, targetScript] = (0, utils_1.getServiceScript)(language, fileName);
27
+ if (serviceScript || targetScript?.associatedOnly) {
28
28
  return [];
29
29
  }
30
30
  else {
@@ -35,17 +35,18 @@ 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, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
39
- if (sourceScript?.associatedOnly) {
38
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
39
+ if (targetScript?.associatedOnly) {
40
40
  return [];
41
41
  }
42
42
  if (serviceScript) {
43
+ const map = language.maps.get(serviceScript.code, targetScript);
43
44
  if (!map.mappings.some(mapping => (0, language_core_1.isFormattingEnabled)(mapping.data))) {
44
45
  return [];
45
46
  }
46
- const edits = getFormattingEditsForDocument(sourceScript.id, options);
47
+ const edits = getFormattingEditsForDocument(targetScript.id, options);
47
48
  return edits
48
- .map(edit => (0, transform_1.transformTextChange)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, edit, language_core_1.isFormattingEnabled)?.[1])
49
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
49
50
  .filter(utils_1.notEmpty);
50
51
  }
51
52
  else {
@@ -54,17 +55,17 @@ function decorateLanguageService(language, languageService) {
54
55
  };
55
56
  languageService.getFormattingEditsForRange = (filePath, start, end, options) => {
56
57
  const fileName = filePath.replace(windowsPathReg, '/');
57
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
58
- if (sourceScript?.associatedOnly) {
58
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
59
+ if (targetScript?.associatedOnly) {
59
60
  return [];
60
61
  }
61
62
  if (serviceScript) {
62
- const generateStart = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, start, language_core_1.isFormattingEnabled);
63
- const generateEnd = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, end, language_core_1.isFormattingEnabled);
63
+ const generateStart = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, start, language_core_1.isFormattingEnabled);
64
+ const generateEnd = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, end, language_core_1.isFormattingEnabled);
64
65
  if (generateStart !== undefined && generateEnd !== undefined) {
65
- const edits = getFormattingEditsForRange(sourceScript.id, generateStart, generateEnd, options);
66
+ const edits = getFormattingEditsForRange(targetScript.id, generateStart, generateEnd, options);
66
67
  return edits
67
- .map(edit => (0, transform_1.transformTextChange)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, edit, language_core_1.isFormattingEnabled)?.[1])
68
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
68
69
  .filter(utils_1.notEmpty);
69
70
  }
70
71
  return [];
@@ -75,16 +76,16 @@ function decorateLanguageService(language, languageService) {
75
76
  };
76
77
  languageService.getFormattingEditsAfterKeystroke = (filePath, position, key, options) => {
77
78
  const fileName = filePath.replace(windowsPathReg, '/');
78
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
79
- if (sourceScript?.associatedOnly) {
79
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
80
+ if (targetScript?.associatedOnly) {
80
81
  return [];
81
82
  }
82
83
  if (serviceScript) {
83
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isFormattingEnabled);
84
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isFormattingEnabled);
84
85
  if (generatePosition !== undefined) {
85
- const edits = getFormattingEditsAfterKeystroke(sourceScript.id, generatePosition, key, options);
86
+ const edits = getFormattingEditsAfterKeystroke(targetScript.id, generatePosition, key, options);
86
87
  return edits
87
- .map(edit => (0, transform_1.transformTextChange)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, edit, language_core_1.isFormattingEnabled)?.[1])
88
+ .map(edit => (0, transform_1.transformTextChange)(sourceScript, language, serviceScript, edit, language_core_1.isFormattingEnabled)?.[1])
88
89
  .filter(utils_1.notEmpty);
89
90
  }
90
91
  return [];
@@ -95,22 +96,22 @@ function decorateLanguageService(language, languageService) {
95
96
  };
96
97
  languageService.getEditsForFileRename = (oldFilePath, newFilePath, formatOptions, preferences) => {
97
98
  const edits = getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences);
98
- return (0, transform_1.transformFileTextChanges)(transform_1.ToSourceMode.IncludeAssciated, language, edits, language_core_1.isRenameEnabled);
99
+ return (0, transform_1.transformFileTextChanges)(language, edits, language_core_1.isRenameEnabled);
99
100
  };
100
101
  languageService.getLinkedEditingRangeAtPosition = (filePath, position) => {
101
102
  const fileName = filePath.replace(windowsPathReg, '/');
102
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
103
- if (sourceScript?.associatedOnly) {
103
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
104
+ if (targetScript?.associatedOnly) {
104
105
  return undefined;
105
106
  }
106
107
  if (serviceScript) {
107
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isLinkedEditingEnabled);
108
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isLinkedEditingEnabled);
108
109
  if (generatePosition !== undefined) {
109
- const info = getLinkedEditingRangeAtPosition(sourceScript.id, generatePosition);
110
+ const info = getLinkedEditingRangeAtPosition(targetScript.id, generatePosition);
110
111
  if (info) {
111
112
  return {
112
113
  ranges: info.ranges
113
- .map(span => (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, span, language_core_1.isLinkedEditingEnabled)?.[1])
114
+ .map(span => (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isLinkedEditingEnabled)?.[1])
114
115
  .filter(utils_1.notEmpty),
115
116
  wordPattern: info.wordPattern,
116
117
  };
@@ -123,19 +124,19 @@ function decorateLanguageService(language, languageService) {
123
124
  };
124
125
  languageService.prepareCallHierarchy = (filePath, position) => {
125
126
  const fileName = filePath.replace(windowsPathReg, '/');
126
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
127
- if (sourceScript?.associatedOnly) {
127
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
128
+ if (targetScript?.associatedOnly) {
128
129
  return undefined;
129
130
  }
130
131
  if (serviceScript) {
131
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isCallHierarchyEnabled);
132
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);
132
133
  if (generatePosition !== undefined) {
133
- const item = prepareCallHierarchy(sourceScript.id, generatePosition);
134
+ const item = prepareCallHierarchy(targetScript.id, generatePosition);
134
135
  if (Array.isArray(item)) {
135
- return item.map(item => (0, transform_1.transformCallHierarchyItem)(transform_1.ToSourceMode.IncludeAssciated, language, item, language_core_1.isCallHierarchyEnabled));
136
+ return item.map(item => (0, transform_1.transformCallHierarchyItem)(language, item, language_core_1.isCallHierarchyEnabled));
136
137
  }
137
138
  else if (item) {
138
- return (0, transform_1.transformCallHierarchyItem)(transform_1.ToSourceMode.IncludeAssciated, language, item, language_core_1.isCallHierarchyEnabled);
139
+ return (0, transform_1.transformCallHierarchyItem)(language, item, language_core_1.isCallHierarchyEnabled);
139
140
  }
140
141
  }
141
142
  }
@@ -146,14 +147,14 @@ function decorateLanguageService(language, languageService) {
146
147
  languageService.provideCallHierarchyIncomingCalls = (filePath, position) => {
147
148
  let calls = [];
148
149
  const fileName = filePath.replace(windowsPathReg, '/');
149
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
150
- if (sourceScript?.associatedOnly) {
150
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
151
+ if (targetScript?.associatedOnly) {
151
152
  return [];
152
153
  }
153
154
  if (serviceScript) {
154
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isCallHierarchyEnabled);
155
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);
155
156
  if (generatePosition !== undefined) {
156
- calls = provideCallHierarchyIncomingCalls(sourceScript.id, generatePosition);
157
+ calls = provideCallHierarchyIncomingCalls(targetScript.id, generatePosition);
157
158
  }
158
159
  }
159
160
  else {
@@ -161,9 +162,9 @@ function decorateLanguageService(language, languageService) {
161
162
  }
162
163
  return calls
163
164
  .map(call => {
164
- const from = (0, transform_1.transformCallHierarchyItem)(transform_1.ToSourceMode.IncludeAssciated, language, call.from, language_core_1.isCallHierarchyEnabled);
165
+ const from = (0, transform_1.transformCallHierarchyItem)(language, call.from, language_core_1.isCallHierarchyEnabled);
165
166
  const fromSpans = call.fromSpans
166
- .map(span => (0, transform_1.transformSpan)(transform_1.ToSourceMode.IncludeAssciated, language, call.from.file, span, language_core_1.isCallHierarchyEnabled)?.textSpan)
167
+ .map(span => (0, transform_1.transformSpan)(language, call.from.file, span, language_core_1.isCallHierarchyEnabled)?.textSpan)
167
168
  .filter(utils_1.notEmpty);
168
169
  return {
169
170
  from,
@@ -174,14 +175,14 @@ function decorateLanguageService(language, languageService) {
174
175
  languageService.provideCallHierarchyOutgoingCalls = (filePath, position) => {
175
176
  let calls = [];
176
177
  const fileName = filePath.replace(windowsPathReg, '/');
177
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
178
- if (sourceScript?.associatedOnly) {
178
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
179
+ if (targetScript?.associatedOnly) {
179
180
  return [];
180
181
  }
181
182
  if (serviceScript) {
182
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isCallHierarchyEnabled);
183
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCallHierarchyEnabled);
183
184
  if (generatePosition !== undefined) {
184
- calls = provideCallHierarchyOutgoingCalls(fileName, generatePosition);
185
+ calls = provideCallHierarchyOutgoingCalls(targetScript.id, generatePosition);
185
186
  }
186
187
  }
187
188
  else {
@@ -189,10 +190,10 @@ function decorateLanguageService(language, languageService) {
189
190
  }
190
191
  return calls
191
192
  .map(call => {
192
- const to = (0, transform_1.transformCallHierarchyItem)(transform_1.ToSourceMode.IncludeAssciated, language, call.to, language_core_1.isCallHierarchyEnabled);
193
+ const to = (0, transform_1.transformCallHierarchyItem)(language, call.to, language_core_1.isCallHierarchyEnabled);
193
194
  const fromSpans = call.fromSpans
194
195
  .map(span => serviceScript
195
- ? (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, span, language_core_1.isCallHierarchyEnabled)?.[1]
196
+ ? (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, span, language_core_1.isCallHierarchyEnabled)?.[1]
196
197
  : span)
197
198
  .filter(utils_1.notEmpty);
198
199
  return {
@@ -203,20 +204,20 @@ function decorateLanguageService(language, languageService) {
203
204
  };
204
205
  languageService.organizeImports = (args, formatOptions, preferences) => {
205
206
  const unresolved = organizeImports(args, formatOptions, preferences);
206
- return (0, transform_1.transformFileTextChanges)(transform_1.ToSourceMode.IncludeAssciated, language, unresolved, language_core_1.isCodeActionsEnabled);
207
+ return (0, transform_1.transformFileTextChanges)(language, unresolved, language_core_1.isCodeActionsEnabled);
207
208
  };
208
209
  languageService.getQuickInfoAtPosition = (filePath, position) => {
209
210
  const fileName = filePath.replace(windowsPathReg, '/');
210
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
211
- if (sourceScript?.associatedOnly) {
211
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
212
+ if (targetScript?.associatedOnly) {
212
213
  return undefined;
213
214
  }
214
215
  if (serviceScript) {
215
216
  const infos = [];
216
- for (const [generatePosition] of (0, transform_1.toGeneratedOffsets)(serviceScript, sourceScript, map, position, language_core_1.isHoverEnabled)) {
217
- const info = getQuickInfoAtPosition(sourceScript.id, generatePosition);
217
+ for (const [generatePosition] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isHoverEnabled)) {
218
+ const info = getQuickInfoAtPosition(targetScript.id, generatePosition);
218
219
  if (info) {
219
- const textSpan = (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, info.textSpan, language_core_1.isHoverEnabled)?.[1];
220
+ const textSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.textSpan, language_core_1.isHoverEnabled)?.[1];
220
221
  if (textSpan) {
221
222
  infos.push({
222
223
  ...info,
@@ -270,16 +271,16 @@ function decorateLanguageService(language, languageService) {
270
271
  };
271
272
  languageService.getSignatureHelpItems = (filePath, position, options) => {
272
273
  const fileName = filePath.replace(windowsPathReg, '/');
273
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
274
- if (sourceScript?.associatedOnly) {
274
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
275
+ if (targetScript?.associatedOnly) {
275
276
  return undefined;
276
277
  }
277
278
  if (serviceScript) {
278
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isSignatureHelpEnabled);
279
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isSignatureHelpEnabled);
279
280
  if (generatePosition !== undefined) {
280
- const result = getSignatureHelpItems(sourceScript.id, generatePosition, options);
281
+ const result = getSignatureHelpItems(targetScript.id, generatePosition, options);
281
282
  if (result) {
282
- const applicableSpan = (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, result.applicableSpan, language_core_1.isSignatureHelpEnabled)?.[1];
283
+ const applicableSpan = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.applicableSpan, language_core_1.isSignatureHelpEnabled)?.[1];
283
284
  if (applicableSpan) {
284
285
  return {
285
286
  ...result,
@@ -309,11 +310,11 @@ function decorateLanguageService(language, languageService) {
309
310
  ...highlights,
310
311
  highlightSpans: highlights.highlightSpans
311
312
  .map(span => {
312
- const { textSpan } = (0, transform_1.transformSpan)(transform_1.ToSourceMode.IncludeAssciated, language, span.fileName ?? highlights.fileName, span.textSpan, language_core_1.isHighlightEnabled) ?? {};
313
+ const { textSpan } = (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.textSpan, language_core_1.isHighlightEnabled) ?? {};
313
314
  if (textSpan) {
314
315
  return {
315
316
  ...span,
316
- contextSpan: (0, transform_1.transformSpan)(transform_1.ToSourceMode.IncludeAssciated, language, span.fileName ?? highlights.fileName, span.contextSpan, language_core_1.isHighlightEnabled)?.textSpan,
317
+ contextSpan: (0, transform_1.transformSpan)(language, span.fileName ?? highlights.fileName, span.contextSpan, language_core_1.isHighlightEnabled)?.textSpan,
317
318
  textSpan,
318
319
  };
319
320
  }
@@ -325,12 +326,12 @@ function decorateLanguageService(language, languageService) {
325
326
  };
326
327
  languageService.getApplicableRefactors = (filePath, positionOrRange, preferences, triggerReason, kind, includeInteractiveActions) => {
327
328
  const fileName = filePath.replace(windowsPathReg, '/');
328
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
329
- if (sourceScript?.associatedOnly) {
329
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
330
+ if (targetScript?.associatedOnly) {
330
331
  return [];
331
332
  }
332
333
  if (serviceScript) {
333
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, typeof positionOrRange === 'number' ? positionOrRange : positionOrRange.pos, language_core_1.isCodeActionsEnabled);
334
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, typeof positionOrRange === 'number' ? positionOrRange : positionOrRange.pos, language_core_1.isCodeActionsEnabled);
334
335
  if (generatePosition !== undefined) {
335
336
  const por = typeof positionOrRange === 'number'
336
337
  ? generatePosition
@@ -338,7 +339,7 @@ function decorateLanguageService(language, languageService) {
338
339
  pos: generatePosition,
339
340
  end: generatePosition + positionOrRange.end - positionOrRange.pos,
340
341
  };
341
- return getApplicableRefactors(sourceScript.id, por, preferences, triggerReason, kind, includeInteractiveActions);
342
+ return getApplicableRefactors(targetScript.id, por, preferences, triggerReason, kind, includeInteractiveActions);
342
343
  }
343
344
  return [];
344
345
  }
@@ -349,12 +350,12 @@ function decorateLanguageService(language, languageService) {
349
350
  languageService.getEditsForRefactor = (filePath, formatOptions, positionOrRange, refactorName, actionName, preferences) => {
350
351
  let edits;
351
352
  const fileName = filePath.replace(windowsPathReg, '/');
352
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
353
- if (sourceScript?.associatedOnly) {
353
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
354
+ if (targetScript?.associatedOnly) {
354
355
  return undefined;
355
356
  }
356
357
  if (serviceScript) {
357
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, typeof positionOrRange === 'number'
358
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, typeof positionOrRange === 'number'
358
359
  ? positionOrRange
359
360
  : positionOrRange.pos, language_core_1.isCodeActionsEnabled);
360
361
  if (generatePosition !== undefined) {
@@ -364,21 +365,21 @@ function decorateLanguageService(language, languageService) {
364
365
  pos: generatePosition,
365
366
  end: generatePosition + positionOrRange.end - positionOrRange.pos,
366
367
  };
367
- edits = getEditsForRefactor(sourceScript.id, formatOptions, por, refactorName, actionName, preferences);
368
+ edits = getEditsForRefactor(targetScript.id, formatOptions, por, refactorName, actionName, preferences);
368
369
  }
369
370
  }
370
371
  else {
371
372
  edits = getEditsForRefactor(fileName, formatOptions, positionOrRange, refactorName, actionName, preferences);
372
373
  }
373
374
  if (edits) {
374
- edits.edits = (0, transform_1.transformFileTextChanges)(transform_1.ToSourceMode.IncludeAssciated, language, edits.edits, language_core_1.isCodeActionsEnabled);
375
+ edits.edits = (0, transform_1.transformFileTextChanges)(language, edits.edits, language_core_1.isCodeActionsEnabled);
375
376
  return edits;
376
377
  }
377
378
  };
378
379
  languageService.getRenameInfo = (filePath, position, options) => {
379
380
  const fileName = filePath.replace(windowsPathReg, '/');
380
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
381
- if (sourceScript?.associatedOnly) {
381
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
382
+ if (targetScript?.associatedOnly) {
382
383
  return {
383
384
  canRename: false,
384
385
  localizedErrorMessage: "Cannot rename"
@@ -386,10 +387,10 @@ function decorateLanguageService(language, languageService) {
386
387
  }
387
388
  if (serviceScript) {
388
389
  let failed;
389
- for (const [generateOffset] of (0, transform_1.toGeneratedOffsets)(serviceScript, sourceScript, map, position, language_core_1.isRenameEnabled)) {
390
- const info = getRenameInfo(sourceScript.id, generateOffset, options);
390
+ for (const [generateOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isRenameEnabled)) {
391
+ const info = getRenameInfo(targetScript.id, generateOffset, options);
391
392
  if (info.canRename) {
392
- const span = (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, info.triggerSpan, language_core_1.isRenameEnabled)?.[1];
393
+ const span = (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, info.triggerSpan, language_core_1.isRenameEnabled)?.[1];
393
394
  if (span) {
394
395
  info.triggerSpan = span;
395
396
  return info;
@@ -414,30 +415,30 @@ function decorateLanguageService(language, languageService) {
414
415
  languageService.getCodeFixesAtPosition = (filePath, start, end, errorCodes, formatOptions, preferences) => {
415
416
  let fixes = [];
416
417
  const fileName = filePath.replace(windowsPathReg, '/');
417
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
418
- if (sourceScript?.associatedOnly) {
418
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
419
+ if (targetScript?.associatedOnly) {
419
420
  return [];
420
421
  }
421
422
  if (serviceScript) {
422
- const generateStart = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, start, language_core_1.isCodeActionsEnabled);
423
- const generateEnd = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, end, language_core_1.isCodeActionsEnabled);
423
+ const generateStart = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, start, language_core_1.isCodeActionsEnabled);
424
+ const generateEnd = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, end, language_core_1.isCodeActionsEnabled);
424
425
  if (generateStart !== undefined && generateEnd !== undefined) {
425
- fixes = getCodeFixesAtPosition(sourceScript.id, generateStart, generateEnd, errorCodes, formatOptions, preferences);
426
+ fixes = getCodeFixesAtPosition(targetScript.id, generateStart, generateEnd, errorCodes, formatOptions, preferences);
426
427
  }
427
428
  }
428
429
  else {
429
430
  fixes = getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences);
430
431
  }
431
432
  fixes = fixes.map(fix => {
432
- fix.changes = (0, transform_1.transformFileTextChanges)(transform_1.ToSourceMode.IncludeAssciated, language, fix.changes, language_core_1.isCodeActionsEnabled);
433
+ fix.changes = (0, transform_1.transformFileTextChanges)(language, fix.changes, language_core_1.isCodeActionsEnabled);
433
434
  return fix;
434
435
  });
435
436
  return fixes;
436
437
  };
437
438
  languageService.getEncodedSemanticClassifications = (filePath, span, format) => {
438
439
  const fileName = filePath.replace(windowsPathReg, '/');
439
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
440
- if (sourceScript?.associatedOnly) {
440
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
441
+ if (targetScript?.associatedOnly) {
441
442
  return {
442
443
  spans: [],
443
444
  endOfLineState: 0
@@ -446,6 +447,7 @@ function decorateLanguageService(language, languageService) {
446
447
  if (serviceScript) {
447
448
  let start;
448
449
  let end;
450
+ const map = language.maps.get(serviceScript.code, targetScript);
449
451
  for (const mapping of map.mappings) {
450
452
  // TODO reuse the logic from language service
451
453
  if ((0, language_core_1.isSemanticTokensEnabled)(mapping.data) && mapping.sourceOffsets[0] >= span.start && mapping.sourceOffsets[0] <= span.start + span.length) {
@@ -456,15 +458,15 @@ function decorateLanguageService(language, languageService) {
456
458
  }
457
459
  }
458
460
  start ??= 0;
459
- end ??= sourceScript.snapshot.getLength();
460
- const mappingOffset = (0, transform_1.getMappingOffset)(serviceScript, sourceScript);
461
+ end ??= targetScript.snapshot.getLength();
462
+ const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);
461
463
  start += mappingOffset;
462
464
  end += mappingOffset;
463
- const result = getEncodedSemanticClassifications(sourceScript.id, { start, length: end - start }, format);
465
+ const result = getEncodedSemanticClassifications(targetScript.id, { start, length: end - start }, format);
464
466
  const spans = [];
465
467
  for (let i = 0; i < result.spans.length; i += 3) {
466
- for (const sourceStart of (0, transform_1.toSourceOffsets)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, result.spans[i], language_core_1.isSemanticTokensEnabled)) {
467
- for (const sourceEnd of (0, transform_1.toSourceOffsets)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, 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)) {
468
470
  if (sourceStart[0] === sourceEnd[0] && sourceEnd[1] >= sourceStart[1]) {
469
471
  spans.push(sourceStart[1], sourceEnd[1] - sourceStart[1], result.spans[i + 2]);
470
472
  break;
@@ -484,33 +486,36 @@ function decorateLanguageService(language, languageService) {
484
486
  };
485
487
  languageService.getSyntacticDiagnostics = filePath => {
486
488
  const fileName = filePath.replace(windowsPathReg, '/');
487
- const [_serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
488
- if (sourceScript?.associatedOnly) {
489
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
490
+ if (targetScript?.associatedOnly) {
489
491
  return [];
490
492
  }
491
- return getSyntacticDiagnostics(fileName)
492
- .map(d => (0, transform_1.transformDiagnostic)(transform_1.ToSourceMode.SkipAssciated, language, d, languageService.getProgram(), false))
493
- .filter(utils_1.notEmpty);
493
+ return getSyntacticDiagnostics(targetScript?.id ?? fileName)
494
+ .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
495
+ .filter(utils_1.notEmpty)
496
+ .filter(d => !serviceScript || language.scripts.get(d.file.fileName) === sourceScript);
494
497
  };
495
498
  languageService.getSemanticDiagnostics = filePath => {
496
499
  const fileName = filePath.replace(windowsPathReg, '/');
497
- const [_serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
498
- if (sourceScript?.associatedOnly) {
500
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
501
+ if (targetScript?.associatedOnly) {
499
502
  return [];
500
503
  }
501
- return getSemanticDiagnostics(fileName)
502
- .map(d => (0, transform_1.transformDiagnostic)(transform_1.ToSourceMode.SkipAssciated, language, d, languageService.getProgram(), false))
503
- .filter(utils_1.notEmpty);
504
+ return getSemanticDiagnostics(targetScript?.id ?? fileName)
505
+ .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
506
+ .filter(utils_1.notEmpty)
507
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
504
508
  };
505
509
  languageService.getSuggestionDiagnostics = filePath => {
506
510
  const fileName = filePath.replace(windowsPathReg, '/');
507
- const [_serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
508
- if (sourceScript?.associatedOnly) {
511
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
512
+ if (targetScript?.associatedOnly) {
509
513
  return [];
510
514
  }
511
- return getSuggestionDiagnostics(fileName)
512
- .map(d => (0, transform_1.transformDiagnostic)(transform_1.ToSourceMode.SkipAssciated, language, d, languageService.getProgram(), false))
513
- .filter(utils_1.notEmpty);
515
+ return getSuggestionDiagnostics(targetScript?.id ?? fileName)
516
+ .map(d => (0, transform_1.transformDiagnostic)(language, d, languageService.getProgram(), false))
517
+ .filter(utils_1.notEmpty)
518
+ .filter(d => !serviceScript || !d.file || language.scripts.get(d.file.fileName) === sourceScript);
514
519
  };
515
520
  languageService.getDefinitionAndBoundSpan = (filePath, position) => {
516
521
  const fileName = filePath.replace(windowsPathReg, '/');
@@ -520,14 +525,14 @@ function decorateLanguageService(language, languageService) {
520
525
  }
521
526
  });
522
527
  const textSpan = unresolved
523
- .map(s => (0, transform_1.transformSpan)(transform_1.ToSourceMode.IncludeAssciated, language, fileName, s.textSpan, language_core_1.isDefinitionEnabled)?.textSpan)
528
+ .map(s => (0, transform_1.transformSpan)(language, fileName, s.textSpan, language_core_1.isDefinitionEnabled)?.textSpan)
524
529
  .filter(utils_1.notEmpty)[0];
525
530
  if (!textSpan) {
526
531
  return;
527
532
  }
528
533
  const definitions = unresolved
529
534
  .map(s => s.definitions
530
- ?.map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
535
+ ?.map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
531
536
  .filter(utils_1.notEmpty))
532
537
  .filter(utils_1.notEmpty)
533
538
  .flat();
@@ -548,11 +553,11 @@ function decorateLanguageService(language, languageService) {
548
553
  const resolved = unresolved
549
554
  .flat()
550
555
  .map(symbol => {
551
- const definition = (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, symbol.definition, language_core_1.isDefinitionEnabled, true);
556
+ const definition = (0, transform_1.transformDocumentSpan)(language, symbol.definition, language_core_1.isDefinitionEnabled, true);
552
557
  return {
553
558
  definition,
554
559
  references: symbol.references
555
- .map(r => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, r, language_core_1.isReferencesEnabled))
560
+ .map(r => (0, transform_1.transformDocumentSpan)(language, r, language_core_1.isReferencesEnabled))
556
561
  .filter(utils_1.notEmpty),
557
562
  };
558
563
  });
@@ -567,7 +572,7 @@ function decorateLanguageService(language, languageService) {
567
572
  });
568
573
  const resolved = unresolved
569
574
  .flat()
570
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
575
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isDefinitionEnabled, s.fileName !== fileName))
571
576
  .filter(utils_1.notEmpty);
572
577
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
573
578
  };
@@ -580,7 +585,7 @@ function decorateLanguageService(language, languageService) {
580
585
  });
581
586
  const resolved = unresolved
582
587
  .flat()
583
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isTypeDefinitionEnabled))
588
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isTypeDefinitionEnabled))
584
589
  .filter(utils_1.notEmpty);
585
590
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
586
591
  };
@@ -593,7 +598,7 @@ function decorateLanguageService(language, languageService) {
593
598
  });
594
599
  const resolved = unresolved
595
600
  .flat()
596
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isImplementationEnabled))
601
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isImplementationEnabled))
597
602
  .filter(utils_1.notEmpty);
598
603
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
599
604
  };
@@ -606,7 +611,7 @@ function decorateLanguageService(language, languageService) {
606
611
  });
607
612
  const resolved = unresolved
608
613
  .flat()
609
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isRenameEnabled))
614
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isRenameEnabled))
610
615
  .filter(utils_1.notEmpty);
611
616
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
612
617
  };
@@ -619,20 +624,20 @@ function decorateLanguageService(language, languageService) {
619
624
  });
620
625
  const resolved = unresolved
621
626
  .flat()
622
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isReferencesEnabled))
627
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isReferencesEnabled))
623
628
  .filter(utils_1.notEmpty);
624
629
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
625
630
  };
626
631
  languageService.getCompletionsAtPosition = (filePath, position, options, formattingSettings) => {
627
632
  const fileName = filePath.replace(windowsPathReg, '/');
628
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
629
- if (sourceScript?.associatedOnly) {
633
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
634
+ if (targetScript?.associatedOnly) {
630
635
  return undefined;
631
636
  }
632
637
  if (serviceScript) {
633
638
  const results = [];
634
- for (const [generatedOffset, mapping] of (0, transform_1.toGeneratedOffsets)(serviceScript, sourceScript, map, position, language_core_1.isCompletionEnabled)) {
635
- const result = getCompletionsAtPosition(sourceScript.id, generatedOffset, options, formattingSettings);
639
+ for (const [generatedOffset, mapping] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled)) {
640
+ const result = getCompletionsAtPosition(targetScript.id, generatedOffset, options, formattingSettings);
636
641
  if (!result) {
637
642
  continue;
638
643
  }
@@ -640,10 +645,10 @@ function decorateLanguageService(language, languageService) {
640
645
  result.entries = result.entries.filter(entry => !!entry.sourceDisplay);
641
646
  }
642
647
  for (const entry of result.entries) {
643
- entry.replacementSpan = entry.replacementSpan && (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, entry.replacementSpan, language_core_1.isCompletionEnabled)?.[1];
648
+ entry.replacementSpan = entry.replacementSpan && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, entry.replacementSpan, language_core_1.isCompletionEnabled)?.[1];
644
649
  }
645
650
  result.optionalReplacementSpan = result.optionalReplacementSpan
646
- && (0, transform_1.transformTextSpan)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, result.optionalReplacementSpan, language_core_1.isCompletionEnabled)?.[1];
651
+ && (0, transform_1.transformTextSpan)(sourceScript, language, serviceScript, result.optionalReplacementSpan, language_core_1.isCompletionEnabled)?.[1];
647
652
  const isAdditional = typeof mapping.data.completion === 'object' && mapping.data.completion.isAdditional;
648
653
  if (isAdditional) {
649
654
  results.push(result);
@@ -668,14 +673,14 @@ function decorateLanguageService(language, languageService) {
668
673
  languageService.getCompletionEntryDetails = (filePath, position, entryName, formatOptions, source, preferences, data) => {
669
674
  let details;
670
675
  const fileName = filePath.replace(windowsPathReg, '/');
671
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
672
- if (sourceScript?.associatedOnly) {
676
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
677
+ if (targetScript?.associatedOnly) {
673
678
  return undefined;
674
679
  }
675
680
  if (serviceScript) {
676
- const generatePosition = (0, transform_1.toGeneratedOffset)(serviceScript, sourceScript, map, position, language_core_1.isCompletionEnabled);
681
+ const generatePosition = (0, transform_1.toGeneratedOffset)(language, serviceScript, sourceScript, position, language_core_1.isCompletionEnabled);
677
682
  if (generatePosition !== undefined) {
678
- details = getCompletionEntryDetails(sourceScript.id, generatePosition, entryName, formatOptions, source, preferences, data);
683
+ details = getCompletionEntryDetails(targetScript.id, generatePosition, entryName, formatOptions, source, preferences, data);
679
684
  }
680
685
  }
681
686
  else {
@@ -683,20 +688,21 @@ function decorateLanguageService(language, languageService) {
683
688
  }
684
689
  if (details?.codeActions) {
685
690
  for (const codeAction of details.codeActions) {
686
- codeAction.changes = (0, transform_1.transformFileTextChanges)(transform_1.ToSourceMode.IncludeAssciated, language, codeAction.changes, language_core_1.isCompletionEnabled);
691
+ codeAction.changes = (0, transform_1.transformFileTextChanges)(language, codeAction.changes, language_core_1.isCompletionEnabled);
687
692
  }
688
693
  }
689
694
  return details;
690
695
  };
691
696
  languageService.provideInlayHints = (filePath, span, preferences) => {
692
697
  const fileName = filePath.replace(windowsPathReg, '/');
693
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
694
- if (sourceScript?.associatedOnly) {
698
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
699
+ if (targetScript?.associatedOnly) {
695
700
  return [];
696
701
  }
697
702
  if (serviceScript) {
698
703
  let start;
699
704
  let end;
705
+ const map = language.maps.get(serviceScript.code, targetScript);
700
706
  for (const mapping of map.mappings) {
701
707
  if ((0, language_core_1.isInlayHintsEnabled)(mapping.data) && mapping.sourceOffsets[0] >= span.start && mapping.sourceOffsets[0] <= span.start + span.length) {
702
708
  start ??= mapping.generatedOffsets[0];
@@ -709,13 +715,13 @@ function decorateLanguageService(language, languageService) {
709
715
  start = 0;
710
716
  end = 0;
711
717
  }
712
- const mappingOffset = (0, transform_1.getMappingOffset)(serviceScript, sourceScript);
718
+ const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);
713
719
  start += mappingOffset;
714
720
  end += mappingOffset;
715
- const result = provideInlayHints(sourceScript.id, { start, length: end - start }, preferences);
721
+ const result = provideInlayHints(targetScript.id, { start, length: end - start }, preferences);
716
722
  const hints = [];
717
723
  for (const hint of result) {
718
- const sourcePosition = (0, transform_1.toSourceOffset)(transform_1.ToSourceMode.SkipAssciated, language, serviceScript, sourceScript, hint.position, language_core_1.isInlayHintsEnabled);
724
+ const sourcePosition = (0, transform_1.toSourceOffset)(sourceScript, language, serviceScript, hint.position, language_core_1.isInlayHintsEnabled);
719
725
  if (sourcePosition !== undefined) {
720
726
  hints.push({
721
727
  ...hint,
@@ -733,19 +739,17 @@ function decorateLanguageService(language, languageService) {
733
739
  const fileName = filePath.replace(windowsPathReg, '/');
734
740
  const unresolved = getFileReferences(fileName);
735
741
  const resolved = unresolved
736
- .map(s => (0, transform_1.transformDocumentSpan)(transform_1.ToSourceMode.IncludeAssciated, language, s, language_core_1.isReferencesEnabled))
742
+ .map(s => (0, transform_1.transformDocumentSpan)(language, s, language_core_1.isReferencesEnabled))
737
743
  .filter(utils_1.notEmpty);
738
744
  return (0, dedupe_1.dedupeDocumentSpans)(resolved);
739
745
  };
740
746
  function linkedCodeFeatureWorker(fileName, position, filter, worker, getLinkedCodes) {
741
747
  const results = [];
742
748
  const processedFilePositions = new Set();
743
- const [serviceScript, sourceScript, map] = (0, utils_1.getServiceScript)(language, fileName);
749
+ const [serviceScript, targetScript, sourceScript] = (0, utils_1.getServiceScript)(language, fileName);
744
750
  if (serviceScript) {
745
- for (const [generatedOffset, mapping] of map.getGeneratedOffsets(position)) {
746
- if (filter(mapping.data)) {
747
- process(sourceScript.id, generatedOffset + (0, transform_1.getMappingOffset)(serviceScript, sourceScript));
748
- }
751
+ for (const [generatedOffset] of (0, transform_1.toGeneratedOffsets)(language, serviceScript, sourceScript, position, filter)) {
752
+ process(targetScript.id, generatedOffset);
749
753
  }
750
754
  }
751
755
  else {
@@ -764,7 +768,7 @@ function decorateLanguageService(language, languageService) {
764
768
  results.push(result);
765
769
  for (const ref of getLinkedCodes(result)) {
766
770
  processedFilePositions.add(ref[0] + ':' + ref[1]);
767
- const [serviceScript, sourceScript] = (0, utils_1.getServiceScript)(language, ref[0]);
771
+ const [serviceScript] = (0, utils_1.getServiceScript)(language, ref[0]);
768
772
  if (!serviceScript) {
769
773
  continue;
770
774
  }
@@ -772,7 +776,7 @@ function decorateLanguageService(language, languageService) {
772
776
  if (!linkedCodeMap) {
773
777
  continue;
774
778
  }
775
- const mappingOffset = (0, transform_1.getMappingOffset)(serviceScript, sourceScript);
779
+ const mappingOffset = (0, transform_1.getMappingOffset)(language, serviceScript);
776
780
  for (const linkedCodeOffset of linkedCodeMap.getLinkedOffsets(ref[1] - mappingOffset)) {
777
781
  process(ref[0], linkedCodeOffset + mappingOffset);
778
782
  }