dep-radius

The JSON output

The --json output, field by field. Version 1 only adds fields.

radius --json prints one JSON object. It has the same content as the terminal output and the pull request comment.

Will it change?

  • The object has "schemaVersion": 1.
  • Version 1 only adds fields. Removing or renaming a field would mean schemaVersion: 2.
  • The JSON Schema is included: @dep-radius/core/schema/brief-v1.schema.json.

Read the fields you need and ignore the others. Your code will keep working.

The top level

FieldTypeWhat
schemaVersion1The contract version
toolobjectname, version, and the typescript version that read the types
rootstringThe folder that was analysed
generatedAtstringISO 8601
sinceobject?With --since only: the ref you gave and the commit it resolved to
exitCode0, 1, 2The worst verdict: quiet, review, blocked
summaryobjectCounts: manifests, withUpdate, upToDate, quiet, review, blocked, notAnalyzed
packagesarrayOne entry per analysed update, see below
notAnalyzedarray{ name, reason } for dependencies radius skipped, and why
wholeProjectarrayThings that hide usage for the whole project, like require(someVariable)
limitsstring[]The limits that applied to this run, in plain words

With --since, summary.withUpdate counts the dependencies that changed version and summary.upToDate counts the ones that didn't.

A package

FieldWhat
nameThe package name
from, toThe installed version and the analysed target
bumpmajor, minor or patch (a 0.x minor counts as a major)
publishedAtWhen to was published
verdictquiet, review or blocked
reasons{ code, detail }[]: every rule that fired, see codes
versionSourceWhere from came from: node_modules, lockfile:npm, lockfile:pnpm, lockfile:yarn, lockfile:bun, or manifest-range (a guess)
manifestsThe package.json files that declare it
typesNet 1, the type surface, see below
notesNet 2, the release notes, see below
usageHow your code uses it
heldBackNewer versions skipped, with a reason (too-new, deprecated, above-dist-tag)
alsoAvailableA newer version beyond the safe line, not analysed (use --latest for it)

types

FieldWhat
statuscomputed, no-types, types-from-@types, types-elsewhere, failed, disabled, offline-uncached
changesHow many exports changed between the two versions
addedHow many exports are new
touchedThe changes that land on your code

Each entry of touched:

FieldWhat
pathThe export, like schemakit:email, schemakit:coerce.number or schemakit:Schema#parse (. for namespace members, # for members of a type)
changeremoved, changed or deprecated
certaintyexact when resolved precisely, by-name when matched by member name only
before, afterThe normalised signatures, when the export still exists
sitesWhere your code uses it
alsoAtThe same change seen from other entry points of the package

notes

FieldWhat
coveragecomplete, partial, none-published, unavailable or disabled
entriesHow many note entries were read in total
versionsPer version: status, the source (kind and url), or a reason
matchedEntries that name something you use: version, title, breaking, direct, refs, and names (name, certainty, where, and option: true when the name is an option a function you call accepts)
breakingWithoutApiBreaking entries that name no API, so they could apply to anyone
changesWithoutApiOther changes radius can't tie to your code: they name no API, or name one it can't place without types

Each entry of breakingWithoutApi and changesWithoutApi has version, title and refs. It can also have likely: a hint, never part of the verdict. The note names code inside the package (setItem) that changed under an export you use (persist), so it probably reaches your code there. Each item has:

FieldWhat
exportThe export you use whose code changed, like schemakit:parse
viaThe note's names found in that changed code
sitesWhere your code uses the export

usage

FieldWhat
filesHow many files use the package
sitesHow many places
namesexact (resolved) and byName (matched by name) names your code uses
sitesByNameEvery site, keyed by the name used there
cannotSee{ kind, count, examples }[], see what radius cannot see

A site

FieldWhat
fileRelative to root
line, column1-based
typeOnlytrue when used only as a type
codeThe source line, trimmed
viaLocal files that re-export the package on the way, if any

Reason codes

CodePushes toMeans
removed-touchedblockedAn export you use was removed
changed-touchedreviewA signature you use changed
deprecated-touchedreviewSomething you use is newly deprecated
possibly-touchedreviewA member you may reach by name changed
notes-matchreviewA release note names something you use
unattributed-breakingreviewA breaking note names no API, so it could be about you
unattributed-changereviewA note describes a change radius can't tie to your code
blind-spotsreviewPart of your usage isn't visible
opaque-usagereviewUsed from scripts, config, CSS or side effects
not-referencedreviewNo scanned file uses it: a tool, loaded by name, or unused
flagged-installreviewPatched, not on the registry, or the version was guessed
out-of-syncreviewThe lockfile or node_modules is out of date with package.json
surface-incompletereviewThe types couldn't be fully compared
no-evidencereviewNeither the notes nor the types are complete
major-unprovenreviewA major is only quiet when both nets are complete and clean
notes-complete-no-match(quiet)Every note read, none mentions what you use
surface-clean(quiet)No changed or removed export you use
caveat-no-types(quiet)Quiet, judged without types
caveat-no-notes(quiet)Quiet, judged without release notes

The last four only appear on quiet packages, to say what the verdict stood on.

On this page