What radius cannot see
What radius cannot see, and what to do about it.
Sometimes radius can't see how your code uses a package. Then it says so, and the update gets
review instead of quiet. In the terminal, these are under "cannot see how you use these". In
JSON, they're in usage.cannotSee.
Used without a name in your code
| Kind | In plain words | Typical example |
|---|---|---|
script-bin | run from scripts in package.json | "lint": "eslint ." |
config-reference | named in a config file | a plugin listed in .babelrc |
side-effect-import | imported only for side effects | import "reflect-metadata" |
css-import | imported from CSS | @import "tailwindcss" |
convention-framework | a framework used through file conventions | next, with its app/ folder |
ambient-types | types that apply globally | @types/node |
radius can't know which part of the package you rely on here. Your build and tests can.
Usage radius can't follow
| Kind | In plain words |
|---|---|
namespace-escape | the whole module is passed around (doSomething(z)) |
computed-member | read with computed keys (lib[name]()) |
dynamic-import-escape | loaded with import() and passed on |
prefix-dynamic-import | loaded by a computed subpath (import(`lodash/${fn}`)) |
public-reexport | re-exported to your own consumers, who may use anything |
unresolved-local-import | reached through a local import that didn't resolve |
derived-escape | a value built from it travels through too many files |
unparseable-file | used in a file that didn't parse |
unresolved-against-surface | a name you use isn't in its types at all |
For the whole project
Some things hide usage across the whole project. They're reported once, at the top (in JSON:
wholeProject), without changing every package's answer:
require(someVariable)andimport(someVariable)with a non-literal name,- generated files that were skipped,
- files that didn't parse.
Limits
- radius only knows what release notes say. If a function works differently and no note says so, radius can't know.
- It doesn't type-check your code. A member used through a callback, or through a value radius didn't follow, is matched by name only ("possibly").
- A local variable with the same name as an import isn't analysed.
- A package whose types come from another package is judged from its notes only.
- Release notes come from GitHub and the package's own changelog. GitLab and others aren't read yet.
- Dependencies of your dependencies aren't checked. Your lockfile handles that.
Every run lists the limits that applied. The benchmark shows what these limits cost on real release notes.