/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { name as pkgName, version as pkgVer } from "../package.json"; import { getFetch } from "./utils"; const IS_NPX_REG = /_npx(\/|\\)\d+\1/; const NPM_REGISTRY = "https://registry.npmjs.org"; export function isNpx(): boolean { // file is in a npx cache dir // TODO: installed locally? return __dirname.match(IS_NPX_REG) !== null; } export function getSelfVer(): string { return pkgVer; } export async function getLatestVer(_fetch = getFetch()): Promise { // fetch pkg info from the npm registry const r = await _fetch(`${NPM_REGISTRY}/${pkgName}`); const json = await r.json(); return json["dist-tags"].latest as string; } export async function getVerInfo() { const installed = getSelfVer(); const latest = await getLatestVer(); return { installed, latest, isLatest: installed === latest, }; }