Contributions welcome. A few invariants are load-bearing and enforced by
test/guard.test.js — a change that needs to weaken that test is out of scope:
- Static only. blastradius must never execute the code it analyses: no
eval, noFunction, novm, no dynamic import of scanned files. It reads source as text. - Zero runtime dependencies.
src/andbin/import onlynode:builtins and the package's own files. The whole point is a tool you can audit and trust. - One child process, read-only. Only
src/git.jsmay spawn, only thegitbinary, only read-only subcommands. - Deterministic. Same project in, same ranking out. PageRank uses fixed damping and a fixed iteration cap; no wall-clock or randomness in the analysis.
The collection (src/graph/) and the algorithms (src/analysis/) are separate, and the
algorithms are pure over the graph. Add tests to test/ against the fixture project in
test/fixtures/project, whose graph is documented in test/graph.test.js. New tests go
in flat test/*.test.js files (the runner ignores test/fixtures).
npm test # node --test test/*.test.js
npm run typecheck # tsc --checkJsBoth must pass on Node 18, 20 and 22. Never commit the license signing key or real report output.