mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 02:00:10 +00:00
e0cec3dc95
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
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { SemVer } from 'semver';
|
|
import { GenericVersioningApi } from '../generic.ts';
|
|
import type { GenericVersion, VersioningApi } from '../types.ts';
|
|
|
|
export const id = 'glasskube';
|
|
export const displayName = 'glasskube';
|
|
export const urls = [];
|
|
export const supportsRanges = false;
|
|
|
|
export class GlasskubeVersioningApi extends GenericVersioningApi {
|
|
protected override _parse(version: string): GenericVersion | null {
|
|
let parsedVersion: SemVer;
|
|
try {
|
|
parsedVersion = new SemVer(version);
|
|
} catch {
|
|
return null;
|
|
}
|
|
const result: GenericVersion = {
|
|
release: [parsedVersion.major, parsedVersion.minor, parsedVersion.patch],
|
|
prerelease:
|
|
parsedVersion.prerelease.length > 0
|
|
? parsedVersion.prerelease.join('.')
|
|
: undefined,
|
|
};
|
|
const build = parsedVersion.build.at(0);
|
|
if (build) {
|
|
try {
|
|
result.release.push(parseInt(build, 10));
|
|
} catch {
|
|
/* noop */
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
export const api: VersioningApi = new GlasskubeVersioningApi();
|
|
export default api;
|