libyear
Version:
A simple measure of software dependency freshness
21 lines (20 loc) • 869 B
JavaScript
// TODO[engine:node@>=24]: drop @js-temporal/polyfill
import { Temporal } from "@js-temporal/polyfill";
const DAYS_IN_YEAR = 365.2425;
const parseISO = (item) => Temporal.Instant.from(item).toZonedDateTimeISO(item).toPlainDateTime();
const differenceInDays = (laterDate, earlierDate) => laterDate.since(earlierDate).days;
/**
* Time since last version update.
* Measure of dependency drift.
*/
export const calculateDrift = (currentVersion, latestVersion) => currentVersion && latestVersion
? differenceInDays(parseISO(latestVersion), parseISO(currentVersion)) /
DAYS_IN_YEAR
: 0;
/**
* Time since latest version release.
* Pulse check of dependency activity and maintenance.
*/
export const calculatePulse = (latestVersion) => latestVersion
? differenceInDays(Temporal.Now.plainDateTimeISO(), parseISO(latestVersion)) / DAYS_IN_YEAR
: 0;