feat(lint): add `types-location` rule and enable it for `lib/modules`
Reviewers consistently ask for exported types to be moved into a
colocated `types.ts`. Add a `renovate/types-location` oxlint rule that
reports `export interface` / `export type` declarations outside such a
file, and turn it on across `lib/modules`.
Re-exports (`export type { X }`, `export type *`), file-local types, and
values (enums, classes, functions) are left alone. `schema.ts` files and
`schema/` directories are excluded via config, matching how
`zod-schema-location` is configured — inferred types belong next to the
schema they are derived from.
Relocating the 87 existing violations means:
- new `types.ts` files for the modules that had none
- `terragrunt/common.ts` folded into its `types.ts`, as it held nothing
else
- `RangeBound` in `versioning/gradle/compare.ts` un-exported, since only
a file-local interface referenced it
- `bazel-module/parser/fragments.ts` split from its inferred types, which
now live in `parser/types.ts` and infer through a namespace import so
each schema keeps its merged name
Renovate can update tool versions in proto .prototools configuration files.
How it works
Proto uses .prototools files (TOML format) to pin tool versions at the directory level.
Tool versions are declared as top-level key-value pairs:
node = "22.14.0"
bun = "1.2.2"
go = "~1.22"
proto = "0.56.0"
Renovate extracts these version pins and updates them using the appropriate datasource for each tool.
Non-version sections ([settings], [plugins], [tools], [env], [shell], [backends]) are ignored.
Supported tools
Renovate's proto manager supports the following built-in proto tools:
| Tool | Datasource | Package |
|---|---|---|
bun |
github-releases |
oven-sh/bun |
deno |
github-releases |
denoland/deno |
go |
github-tags |
golang/go |
moon |
github-releases |
moonrepo/moon |
node |
node-version |
node |
npm |
npm |
npm |
pnpm |
npm |
pnpm |
yarn |
npm |
@yarnpkg/cli |
python |
github-tags |
python/cpython |
ruby |
ruby-version |
ruby-version |
rust |
rust-version |
rust |
proto |
github-releases |
moonrepo/proto |
gh |
github-releases |
cli/cli |
poetry |
github-releases |
python-poetry/poetry |
uv |
github-releases |
astral-sh/uv |
Limitations
-
Third-party plugins: Tools installed via
[plugins]URLs (custom WASM plugins) are reported asunsupported-datasourceand skipped. You can use Renovate'scustomManagerswith regex to handle these if needed. -
Version aliases: Values like
latest,stable,canary, ornightlyare skipped as they cannot be updated via semver. -
Version ranges: Proto supports partial versions (
22,~1.20,^3.1) which Renovate passes through as-is. The appropriate versioning strategy for each datasource handles these. -
asdf backend syntax: Proto supports
"asdf:tool" = "version"syntax for tools via the asdf backend. This is not currently supported by the manager.