Skip to content

Commit 11d9dff

Browse files
committed
refactor(typescript-plugin): getPropertiesAtLocation -> isRefAtLocation
1 parent fc6b992 commit 11d9dff

File tree

5 files changed

+20
-21
lines changed

5 files changed

+20
-21
lines changed

packages/language-server/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ connection.onInitialize(params => {
129129
getImportPathForFile(...args) {
130130
return sendTsServerRequest('_vue:getImportPathForFile', args);
131131
},
132-
getPropertiesAtLocation(...args) {
133-
return sendTsServerRequest('_vue:getPropertiesAtLocation', args);
132+
isRefAtLocation(...args) {
133+
return sendTsServerRequest('_vue:isRefAtLocation', args);
134134
},
135135
getDocumentHighlights(fileName, position) {
136136
return sendTsServerRequest(

packages/language-service/lib/plugins/vue-autoinsert-dotvalue.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { resolveEmbeddedCode } from '../utils';
55

66
export function create(
77
ts: typeof import('typescript'),
8-
{ getPropertiesAtLocation }: import('@vue/typescript-plugin/lib/requests').Requests,
8+
{ isRefAtLocation }: import('@vue/typescript-plugin/lib/requests').Requests,
99
): LanguageServicePlugin {
1010
return {
1111
name: 'vue-autoinsert-dotvalue',
@@ -60,8 +60,7 @@ export function create(
6060
}
6161
}
6262

63-
const props = await getPropertiesAtLocation(info.root.fileName, sourceOffset) ?? [];
64-
if (props.some(prop => prop === 'value')) {
63+
if (await isRefAtLocation(info.root.fileName, sourceOffset)) {
6564
return '${1:.value}';
6665
}
6766
},

packages/typescript-plugin/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getComponentSlots } from './lib/requests/getComponentSlots';
1212
import { getElementAttrs } from './lib/requests/getElementAttrs';
1313
import { getElementNames } from './lib/requests/getElementNames';
1414
import { getImportPathForFile } from './lib/requests/getImportPathForFile';
15-
import { getPropertiesAtLocation } from './lib/requests/getPropertiesAtLocation';
15+
import { isRefAtLocation } from './lib/requests/isRefAtLocation';
1616

1717
const windowsPathReg = /\\/g;
1818
const project2Service = new WeakMap<
@@ -116,11 +116,11 @@ export = createLanguageServicePlugin(
116116
response: getImportPathForFile(ts, languageServiceHost, program, fileName, incomingFileName, preferences),
117117
};
118118
});
119-
session.addProtocolHandler('_vue:getPropertiesAtLocation', request => {
120-
const [fileName, position]: Parameters<Requests['getPropertiesAtLocation']> = request.arguments;
119+
session.addProtocolHandler('_vue:isRefAtLocation', request => {
120+
const [fileName, position]: Parameters<Requests['isRefAtLocation']> = request.arguments;
121121
const { language, program, sourceScript, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
122122
return {
123-
response: getPropertiesAtLocation(ts, language, program, sourceScript, virtualCode, position, true),
123+
response: isRefAtLocation(ts, language, program, sourceScript, virtualCode, position, true),
124124
};
125125
});
126126
session.addProtocolHandler('_vue:getComponentDirectives', request => {

packages/typescript-plugin/lib/requests/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ export interface Requests {
1212
incomingFileName: string,
1313
preferences: ts.UserPreferences,
1414
): Response<ReturnType<typeof import('./getImportPathForFile.js')['getImportPathForFile']>>;
15-
getPropertiesAtLocation(
15+
isRefAtLocation(
1616
fileName: string,
1717
position: number,
1818
): Response<
19-
ReturnType<typeof import('./getPropertiesAtLocation.js')['getPropertiesAtLocation']>
19+
ReturnType<typeof import('./isRefAtLocation.js')['isRefAtLocation']>
2020
>;
2121
getComponentDirectives(fileName: string): Response<
2222
ReturnType<typeof import('./getComponentDirectives.js')['getComponentDirectives']>

packages/typescript-plugin/lib/requests/getPropertiesAtLocation.ts renamed to packages/typescript-plugin/lib/requests/isRefAtLocation.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
33
import { isCompletionEnabled, type Language, type SourceScript, type VueVirtualCode } from '@vue/language-core';
44
import type * as ts from 'typescript';
55

6-
export function getPropertiesAtLocation(
6+
export function isRefAtLocation(
77
ts: typeof import('typescript'),
88
language: Language,
99
program: ts.Program,
1010
sourceScript: SourceScript,
1111
virtualCode: VueVirtualCode,
1212
position: number,
1313
isTsPlugin: boolean,
14-
): string[] {
15-
const virtualScript = sourceScript.generated!.languagePlugin.typescript?.getServiceScript(virtualCode);
16-
if (!virtualScript) {
17-
return [];
14+
): boolean {
15+
const serviceScript = sourceScript.generated!.languagePlugin.typescript?.getServiceScript(virtualCode);
16+
if (!serviceScript) {
17+
return false;
1818
}
1919

2020
let mapped = false;
21-
for (const [_sourceScript, map] of language.maps.forEach(virtualScript.code)) {
21+
for (const [_sourceScript, map] of language.maps.forEach(serviceScript.code)) {
2222
for (const [position2, mapping] of map.toGeneratedLocation(position)) {
2323
if (isCompletionEnabled(mapping.data)) {
2424
position = position2;
@@ -31,25 +31,25 @@ export function getPropertiesAtLocation(
3131
}
3232
}
3333
if (!mapped) {
34-
return [];
34+
return false;
3535
}
3636
position += isTsPlugin ? sourceScript.snapshot.getLength() : 0;
3737

3838
const sourceFile = program.getSourceFile(virtualCode.fileName);
3939
if (!sourceFile) {
40-
return [];
40+
return false;
4141
}
4242

4343
const node = findPositionIdentifier(sourceFile, sourceFile, position);
4444
if (!node) {
45-
return [];
45+
return false;
4646
}
4747

4848
const checker = program.getTypeChecker();
4949
const type = checker.getTypeAtLocation(node);
5050
const props = type.getProperties();
5151

52-
return props.map(prop => prop.name);
52+
return props.some(prop => prop.name === 'value');
5353

5454
function findPositionIdentifier(sourceFile: ts.SourceFile, node: ts.Node, offset: number) {
5555
let result: ts.Node | undefined;

0 commit comments

Comments
 (0)