
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
libyearA Node.js implementation of libyear.
A simple measure of software dependency freshness. It is a single number telling you how up-to-date your dependencies are.
drift representing "dependency drift"; the time between the release of the currently used and latest (stable) available versions of a dependency.pulse representing an indication of a dependency's activity; the time since the release of the latest available version of a dependency (including pre-release).All metrics are measured in "libyears" and are calculated against dependencies both collectively and individually.
Dependency drift fitness function is a technique to introduce a specific evolutionary architecture fitness function to track dependencies over time, giving an indication of the possible work needed and whether a potential issue is getting better or worse.
Newer versions of dependencies may include bug fixes and security vulnerability fixes. These fixes are often released in "patch" versions which are backwards-compatible.
Newer versions of dependencies may include performance improvements and new features/capabilities. These enhancements are often released in "minor" versions which are backwards-compatible.
The fixes and features released by dependency authors often filter down to the consumer packages.
A practice of regular dependency maintenance begets smaller changes and easier upgrades. Continual evolution of the code avoids rewrites. When using the most recent versions of a dependency there is better alignment with documentation.
It is difficult to find volunteers to maintain legacy code. Modern stacks attract developers.
libyearlibyear offers a package-manager-agnostic tool to measure dependency freshness for Node.js environments.
On top of the most commonly referenced "dependency drift" fitness function,
libyear tracks additional metrics like "pulse".
"drift" is useful as a guideline to determine when dependencies should be updated.
"pulse" is useful for identifying dependencies that may no longer be maintained.
Each metric can be configured with a threshold. If configured, a breach of the threshold will exit the process with a failure code. This may be used in CI as a quality gate.
npmnpx libyear
yarn@1 (yarn classic)yarn install --save-dev libyear
package.json
{
"scripts": {
"libyear": "libyear"
}
}
yarn libyear
yarn@2 (yarn berry)yarn dlx libyear
--package-managerAccepts berry, npm, yarn. Default is inferred.
--threshold-drift-collectiveAccepts a number. Default null.
Throws an error if the total drift metric surpasses the threshold.
--threshold-drift-individualAccepts a number. Default null.
Throws an error if any individual drift metric surpasses the threshold.
--threshold-pulse-collectiveAccepts a number. Default null.
Throws an error if the total pulse metric surpasses the threshold.
--threshold-pulse-individualAccepts a number. Default null.
Throws an error if any individual pulse metric surpasses the threshold.
npm ls UNMET PEER DEPENDENCYberry w/o "required" workaroundlibyear is inspired by the package-mananger-specific variants of libyear.
FAQs
A simple measure of software dependency freshness
We found that libyear demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.