11import type { HoverProvider , Position , TextDocument } from 'vscode'
22import { SPACER } from '#constants'
3- import { getPackageInfo } from '#utils/api/package'
43import { jsrPackageUrl , npmxDocsUrl , npmxPackageUrl } from '#utils/links'
5- import { isJsrNpmPackage , jsrNpmToJsrName } from '#utils/package'
6- import { isSupportedProtocol } from '#utils/version'
74import { getResolvedDependencyByOffset } from '#utils/workspace'
85import { Hover , MarkdownString } from 'vscode'
96
@@ -14,43 +11,42 @@ export class NpmxHoverProvider implements HoverProvider {
1411 if ( ! dep )
1512 return
1613
17- const { protocol , resolvedName, resolvedSpec } = dep
14+ const { resolvedName, resolvedSpec, resolvedProtocol , packageInfo } = dep
1815
19- if ( protocol === 'jsr' || isJsrNpmPackage ( resolvedName ) ) {
20- const jsrMd = new MarkdownString ( '' , true )
21- jsrMd . isTrusted = true
16+ switch ( resolvedProtocol ) {
17+ case 'jsr' : {
18+ const jsrMd = new MarkdownString ( '' , true )
19+ jsrMd . isTrusted = true
2220
23- const jsrName = jsrNpmToJsrName ( resolvedName )
24- const jsrPackageLink = `[$(package) ${ SPACER } View on jsr.io]( ${ jsrPackageUrl ( jsrName ) } )`
25- jsrMd . appendMarkdown ( ` ${ jsrPackageLink } | $(warning) Not on npmx` )
26- return new Hover ( jsrMd )
27- }
28-
29- if ( ! isSupportedProtocol ( protocol ) )
30- return
21+ const jsrPackageLink = `[$(package) ${ SPACER } View on jsr.io]( ${ jsrPackageUrl ( resolvedName ) } )`
22+ jsrMd . appendMarkdown ( ` ${ jsrPackageLink } | $(warning) Not on npmx` )
23+ return new Hover ( jsrMd )
24+ }
25+ case 'npm' : {
26+ const pkg = await packageInfo ( )
27+ if ( ! pkg ) {
28+ const errorMd = new MarkdownString ( '' , true )
3129
32- const pkg = await getPackageInfo ( resolvedName )
33- if ( ! pkg ) {
34- const errorMd = new MarkdownString ( '' , true )
30+ errorMd . isTrusted = true
31+ errorMd . appendMarkdown ( '$(warning) Unable to fetch package information' )
3532
36- errorMd . isTrusted = true
37- errorMd . appendMarkdown ( '$(warning) Unable to fetch package information' )
33+ return new Hover ( errorMd )
34+ }
3835
39- return new Hover ( errorMd )
40- }
41-
42- const md = new MarkdownString ( '' , true )
43- md . isTrusted = true
36+ const md = new MarkdownString ( '' , true )
37+ md . isTrusted = true
4438
45- const exactVersion = await dep . resolvedVersion ( )
46- if ( exactVersion && pkg . versionsMeta [ exactVersion ] ?. provenance )
47- md . appendMarkdown ( `[$(verified)${ SPACER } Verified provenance](${ npmxPackageUrl ( resolvedName , resolvedSpec ) } #provenance)\n\n` )
39+ const exactVersion = await dep . resolvedVersion ( )
40+ if ( exactVersion && pkg . versionsMeta [ exactVersion ] ?. provenance )
41+ md . appendMarkdown ( `[$(verified)${ SPACER } Verified provenance](${ npmxPackageUrl ( resolvedName , resolvedSpec ) } #provenance)\n\n` )
4842
49- const packageLink = `[$(package)${ SPACER } View on npmx.dev](${ npmxPackageUrl ( resolvedName ) } )`
50- const docsLink = `[$(book)${ SPACER } View docs on npmx.dev](${ npmxDocsUrl ( resolvedName , resolvedSpec ) } )`
43+ const packageLink = `[$(package)${ SPACER } View on npmx.dev](${ npmxPackageUrl ( resolvedName ) } )`
44+ const docsLink = `[$(book)${ SPACER } View docs on npmx.dev](${ npmxDocsUrl ( resolvedName , resolvedSpec ) } )`
5145
52- md . appendMarkdown ( `${ packageLink } | ${ docsLink } ` )
46+ md . appendMarkdown ( `${ packageLink } | ${ docsLink } ` )
5347
54- return new Hover ( md )
48+ return new Hover ( md )
49+ }
50+ }
5551 }
5652}
0 commit comments