Skip to content

Commit e19d1c7

Browse files
refactor: request dependency resolution from language server (#96)
* refactor: request dependency resolution from language server * [autofix.ci] apply automated fixes * chore: add log --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 9edd184 commit e19d1c7

File tree

14 files changed

+89
-158
lines changed

14 files changed

+89
-158
lines changed

extensions/vscode/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,7 @@
209209
"npmx-language-core": "workspace:*",
210210
"npmx-language-server": "workspace:*",
211211
"npmx-shared": "workspace:*",
212-
"ocache": "catalog:inline",
213212
"reactive-vscode": "catalog:inline",
214-
"semver": "catalog:inline",
215213
"vscode-ext-gen": "catalog:dev",
216214
"vscode-find-up": "catalog:inline"
217215
}

extensions/vscode/src/client.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import type { DocumentFilter } from '@volar/vscode'
2-
import type { GetPackageManagerRequest } from 'npmx-shared/protocol'
32
import { SUPPORTED_DOCUMENT_PATTERN } from '#utils/constants'
43
import { middleware } from '@volar/vscode'
54
import { LanguageClient, TransportKind } from '@volar/vscode/node'
65
import { displayName, extensionId } from 'npmx-shared/meta'
7-
import { GET_PACKAGE_MANAGER_METHOD } from 'npmx-shared/protocol'
8-
import { commands, Hover, MarkdownString, Uri } from 'vscode'
6+
import { Hover, MarkdownString } from 'vscode'
7+
import { registerRequests } from './request'
98

109
const SUPPORTED_LANGUAGES = [
1110
'javascript',
@@ -74,17 +73,7 @@ export function launch(serverPath: string) {
7473
},
7574
)
7675

77-
client.onRequest(
78-
GET_PACKAGE_MANAGER_METHOD,
79-
async (params: GetPackageManagerRequest.ParamsType): Promise<GetPackageManagerRequest.ResponseType> => {
80-
try {
81-
const result = await commands.executeCommand<GetPackageManagerRequest.ResponseType>('npm.packageManager', Uri.parse(params.uri))
82-
return result || 'npm'
83-
} catch {
84-
return 'npm'
85-
}
86-
},
87-
)
76+
registerRequests(client)
8877

8978
return { client, ready: client.start() }
9079
}

extensions/vscode/src/composables/workspace-context.ts

Lines changed: 0 additions & 52 deletions
This file was deleted.

extensions/vscode/src/core/workspace.ts

Lines changed: 0 additions & 71 deletions
This file was deleted.

extensions/vscode/src/index.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { useWorkspaceContext } from '#composables/workspace-context'
21
import { createLabsInfo } from '@volar/vscode'
32
import { ADD_TO_IGNORE_COMMAND } from 'npmx-shared/commands'
43
import { commands, displayName, version } from 'npmx-shared/meta'
@@ -18,9 +17,7 @@ export const { activate, deactivate } = defineExtension((ctx) => {
1817
const { client } = launch(serverPath)
1918
volarLabs.addLanguageClient(client)
2019

21-
useWorkspaceContext()
22-
23-
useDecorators()
20+
useDecorators(client)
2421

2522
useCommand(ADD_TO_IGNORE_COMMAND, addToIgnore)
2623

extensions/vscode/src/providers/decorators.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import type { BaseLanguageClient } from '@volar/vscode'
12
import type { DecorationOptions } from 'vscode'
2-
import { getResolvedDependencies } from '#core/workspace'
33
import { logger } from '#state'
44
import { offsetRangeToRange } from '#utils/ast'
5+
import { getResolvedDependencies } from '#utils/request'
56
import { isPackageManifest } from 'npmx-language-core/utils'
67
import { useActiveTextEditor, useEditorDecorations, watch } from 'reactive-vscode'
78
import { Range } from 'vscode'
89

9-
export function useDecorators() {
10+
export function useDecorators(client: BaseLanguageClient) {
1011
const activeEditor = useActiveTextEditor()
1112

1213
const { update } = useEditorDecorations(
@@ -20,7 +21,7 @@ export function useDecorators() {
2021
return []
2122
logger.info(`[decorators] updating ${document.uri.path}`)
2223

23-
const dependencies = await getResolvedDependencies(document.uri)
24+
const dependencies = await getResolvedDependencies(client, document.uri)
2425
if (!dependencies)
2526
return []
2627

extensions/vscode/src/request.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import type { BaseLanguageClient } from '@volar/vscode'
2+
import type { GetPackageManagerRequest } from 'npmx-shared/protocol'
3+
import { RequestType } from '@volar/vscode'
4+
import { GET_PACKAGE_MANAGER_METHOD } from 'npmx-shared/protocol'
5+
import { commands, Uri } from 'vscode'
6+
7+
const getPackageManagerRequestType = new RequestType<
8+
GetPackageManagerRequest.ParamsType,
9+
GetPackageManagerRequest.ResponseType,
10+
GetPackageManagerRequest.ErrorType
11+
>(GET_PACKAGE_MANAGER_METHOD)
12+
13+
export function registerRequests(client: BaseLanguageClient) {
14+
client.onRequest(
15+
getPackageManagerRequestType,
16+
async (params): Promise<GetPackageManagerRequest.ResponseType> => {
17+
try {
18+
const result = await commands.executeCommand<GetPackageManagerRequest.ResponseType>('npm.packageManager', Uri.parse(params.uri))
19+
return result || 'npm'
20+
} catch {
21+
return 'npm'
22+
}
23+
},
24+
)
25+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import type { BaseLanguageClient } from '@volar/vscode'
2+
import type { GetResolvedDependenciesRequest } from 'npmx-shared/protocol'
3+
import type { Uri } from 'vscode'
4+
import { logger } from '#state'
5+
import { RequestType } from '@volar/vscode'
6+
import { GET_RESOLVED_DEPENDENCIES_METHOD } from 'npmx-shared/protocol'
7+
8+
const getResolvedDependenciesRequestType = new RequestType<
9+
GetResolvedDependenciesRequest.ParamsType,
10+
GetResolvedDependenciesRequest.ResponseType,
11+
GetResolvedDependenciesRequest.ErrorType
12+
>(GET_RESOLVED_DEPENDENCIES_METHOD)
13+
14+
export async function getResolvedDependencies(client: BaseLanguageClient, uri: Uri) {
15+
try {
16+
return client.sendRequest(getResolvedDependenciesRequestType, { uri: uri.toString() })
17+
} catch (err) {
18+
logger.error(`Failed to resolve dependencies for ${uri.toString()}: ${String(err)}`)
19+
return []
20+
}
21+
}

extensions/vscode/tsconfig.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
"#state": ["./src/state.ts"],
77
"#api/*": ["./src/api/*"],
88
"#types/*": ["./src/types/*"],
9-
"#utils/*": ["./src/utils/*"],
10-
"#core/*": ["./src/core/*"],
11-
"#composables/*": ["./src/composables/*"]
9+
"#utils/*": ["./src/utils/*"]
1210
}
1311
},
1412
"include": [

extensions/vscode/tsdown.config.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ export default defineConfig({
1515
'balanced-match',
1616
'brace-expansion',
1717
'minimatch',
18-
'ocache',
19-
'ohash',
2018
'path-browserify',
2119
'semver',
2220
'typescript',

0 commit comments

Comments
 (0)