@@ -2,7 +2,7 @@ import type { Extractor } from '#types/extractor'
22import type { HoverProvider , Position , TextDocument } from 'vscode'
33import { SPACER } from '#constants'
44import { getPackageInfo } from '#utils/api/package'
5- import { npmPacakgeUrl , npmxDocsUrl , npmxPackageUrl } from '#utils/links'
5+ import { jsrPackageUrl , npmPackageUrl , npmxDocsUrl , npmxPackageUrl } from '#utils/links'
66import { isSupportedProtocol , parseVersion } from '#utils/package'
77import { Hover , MarkdownString } from 'vscode'
88
@@ -24,24 +24,45 @@ export class NpmxHoverProvider<T extends Extractor> implements HoverProvider {
2424 return
2525
2626 const parsed = parseVersion ( dep . version )
27- if ( ! parsed || ! isSupportedProtocol ( parsed . protocol ) )
27+ if ( ! parsed )
2828 return
2929
3030 const { name } = dep
31+ const { protocol, semver } = parsed
3132
32- const pkg = await getPackageInfo ( name )
33- if ( ! pkg )
33+ if ( protocol === 'jsr' ) {
34+ const jsrMd = new MarkdownString ( '' , true )
35+ const jsrUrl = jsrPackageUrl ( name , semver )
36+
37+ jsrMd . isTrusted = true
38+
39+ const jsrPackageLink = `[$(package)${ SPACER } View on jsr.io](${ jsrUrl } )`
40+ const npmxWarning = '$(warning) Not on npmx'
41+ jsrMd . appendMarkdown ( `${ jsrPackageLink } | ${ npmxWarning } ` )
42+
43+ return new Hover ( jsrMd )
44+ }
45+
46+ if ( ! isSupportedProtocol ( protocol ) )
3447 return
3548
49+ const pkg = await getPackageInfo ( name )
50+ if ( ! pkg ) {
51+ const errorMd = new MarkdownString ( '' , true )
52+
53+ errorMd . isTrusted = true
54+ errorMd . appendMarkdown ( '$(warning) Unable to fetch package information' )
55+
56+ return new Hover ( errorMd )
57+ }
58+
3659 const md = new MarkdownString ( '' , true )
3760 md . isTrusted = true
3861
39- const { semver } = parsed
40-
4162 const currentVersion = pkg . versionsMeta [ semver ]
4263 if ( currentVersion ) {
4364 if ( currentVersion . provenance )
44- md . appendMarkdown ( `[$(verified)${ SPACER } Verified provenance](${ npmPacakgeUrl ( name , semver ) } #provenance)\n\n` )
65+ md . appendMarkdown ( `[$(verified)${ SPACER } Verified provenance](${ npmPackageUrl ( name , semver ) } #provenance)\n\n` )
4566 }
4667
4768 const packageLink = `[$(package)${ SPACER } View on npmx](${ npmxPackageUrl ( name ) } )`
0 commit comments