Files
renovate/lib/modules/datasource/java-version/index.ts
Michael Kriese f64ec3975a fix(cache): build all cache keys with a shared helper (#46811)
* refactor(datasource): separate registry URLs in cache keys with a colon

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* fix(datasource/go): separate the remaining cache key parts with a colon

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* refactor(datasource): build cache keys with a shared colon-joining helper

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* refactor: build all cache keys with buildCacheKey

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* refactor(http): keep GET package cache keys as the bare URL

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* refactor(cache): extend cache key helper to memory cache keys

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* refactor(datasource/go): prefix the goproxy cache keys with their purpose

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-10 10:46:09 +00:00

64 lines
1.8 KiB
TypeScript

import { logger } from '../../../logger/index.ts';
import { buildCacheKey } from '../../../util/cache/package/key.ts';
import { Datasource } from '../datasource.ts';
import type { GetReleasesConfig, ReleaseResult } from '../types.ts';
import { adoptiumRegistryUrl, getAdoptiumReleases } from './adoptium.ts';
import { datasource, parsePackage } from './common.ts';
import { getGraalvmReleases, graalvmRegistryUrl } from './graalvm.ts';
export class JavaVersionDatasource extends Datasource {
static readonly id = datasource;
constructor() {
super(datasource);
}
override getDefaultRegistryUrls(packageName: string): string[] {
return packageName.includes('oracle-graalvm')
? [graalvmRegistryUrl]
: [adoptiumRegistryUrl];
}
override supportsCustomRegistry(packageName: string): boolean {
return packageName.includes('oracle-graalvm');
}
private async fetchReleases({
registryUrl,
packageName,
}: GetReleasesConfig): Promise<ReleaseResult | null> {
const pkgConfig = parsePackage(packageName);
logger.trace(
{ registryUrl, packageName, pkgConfig },
'fetching java release',
);
try {
if (pkgConfig.vendor === 'oracle-graalvm') {
const effectiveRegistryUrl = registryUrl ?? graalvmRegistryUrl;
return await getGraalvmReleases(
this.http,
pkgConfig,
effectiveRegistryUrl,
);
}
// Default to Adoptium
return await getAdoptiumReleases(this.http, pkgConfig);
} catch (err) {
this.handleGenericErrors(err);
}
}
getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null> {
return this.cached(
{
key: buildCacheKey(config.registryUrl, config.packageName),
cacheable: true,
fallback: true,
},
() => this.fetchReleases(config),
);
}
}