@vtex/fsp-cli
Version:
A VTEX CLI
55 lines (48 loc) • 1.1 kB
text/typescript
/**
* Fetches the npm registry and returns the latest version of a given package
* @param packageName Name of the package
* @returns As string with the latest version of the package
*/
export async function getPackageLatestVersion(
packageName: string
): Promise<string> {
try {
const request = await fetch(`https://registry.npmjs.org/${packageName}`)
const { 'dist-tags': distTags }: PackageMeta = await request.json()
return distTags.latest
} catch {
// The fallback is the highest available 'latest' dist-tag
return 'latest'
}
}
interface PackageMeta {
_id: string
_rev: string
name: string
'dist-tags': DistTags
versions: Record<string, unknown>
time: Time
author: Author
license: string
keywords: string[]
description: string
maintainers: Maintainer[]
readme: string
readmeFilename: string
}
interface Time {
created: string
modified: string
[key: string]: string
}
interface Author {
name: string
}
interface Maintainer {
name: string
email: string
}
interface DistTags {
latest: string
[key: string]: string
}