Skip to content

Commit 0f6637e

Browse files
committed
feat: display provenance badge
close #10
1 parent 71a289e commit 0f6637e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/providers/hover/npmx.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import type { Extractor } from '#types/extractor'
22
import type { HoverProvider, Position, TextDocument } from 'vscode'
3+
import { getPackageInfo } from '#utils/npm'
4+
import { extractVersion } from '#utils/version'
35
import { Hover, MarkdownString } from 'vscode'
46

57
export class NpmxHoverProvider<T extends Extractor> implements HoverProvider {
@@ -9,7 +11,7 @@ export class NpmxHoverProvider<T extends Extractor> implements HoverProvider {
911
this.extractor = extractor
1012
}
1113

12-
provideHover(document: TextDocument, position: Position) {
14+
async provideHover(document: TextDocument, position: Position) {
1315
const root = this.extractor.parse(document)
1416
if (!root)
1517
return
@@ -21,9 +23,16 @@ export class NpmxHoverProvider<T extends Extractor> implements HoverProvider {
2123

2224
const { name, version } = dep
2325
const coercedVersion = extractVersion(version)
24-
const md = new MarkdownString('')
26+
const md = new MarkdownString('', true)
2527
md.isTrusted = true
2628

29+
const pkg = await getPackageInfo(name)
30+
const currentVersion = pkg.versions[coercedVersion]
31+
if (currentVersion) {
32+
if (currentVersion.hasProvenance)
33+
md.appendMarkdown(`[$(verified) Verified provenance](https://www.npmjs.com/package/${name}/v/${currentVersion.version}#provenance)\n\n`)
34+
}
35+
2736
const footer = [
2837
`**[View on npmx](https://npmx.dev/package/${name})**`,
2938
`**[View docs on npmx](https://npmx.dev/docs/${name}/v/${coercedVersion})**`,

0 commit comments

Comments
 (0)