Files
renovate/lib/modules/datasource/api.ts
T
Punsoong Khut 795d083264 feat(datasource): add APK datasource support (#40250)
* feat(datasource): add APK datasource support

* remove missing manager link for now

* lint docs

* update tests

* replace binary fixtures

* fix coverage

* Update lib/modules/datasource/apk/readme.md

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* Apply suggestion from @viceice

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* use tar instead of tar-stream

* use codeBlock

* add ignore back

* make method private

* use an async extract instead of list

* add usage example

* stream apkindex download and parse line-by-line

* refactor(datasource): address review comments on APK datasource

Co-authored-by: Cursor <cursoragent@cursor.com>

* chore: sync pnpm-lock.yaml after merge

Co-authored-by: Cursor <cursoragent@cursor.com>

* test: remove ignored lines

As they seem to be covered, anyway.

* fixup! Merge remote-tracking branch 'origin/HEAD' into apk-datasource

* fixup! fixup! Merge remote-tracking branch 'origin/HEAD' into apk-datasource

* lint: use `node:` prefix

* Update lib/modules/datasource/apk/index.ts

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* refactor(datasource/apk): use asTimestamp millis instead of new Date

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(datasource/apk): rename uncached method to _getPackages

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(datasource/apk): encode registry URL parts as query parameters

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(datasource/apk): reject invalid registry URLs, skip caching empty indexes

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(datasource/apk): throw on unparseable registry URL and drop unset sourceUrl support

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(datasource/apk): show how registry URL parameters build the index URLs

Co-authored-by: Cursor <cursoragent@cursor.com>

* Apply suggestions from code review

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* fix(datasource/apk): keep credentials and port in component URLs

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(datasource/apk): extract APKINDEX by basename and key packages by name

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(datasource/apk): report a version served by two components only once

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-09-04 12:25:21 +00:00

173 lines
9.9 KiB
TypeScript

import { ApkDatasource } from './apk/index.ts';
import { ArtifactoryDatasource } from './artifactory/index.ts';
import { AwsEKSAddonDataSource } from './aws-eks-addon/index.ts';
import { AwsMachineImageDatasource } from './aws-machine-image/index.ts';
import { AwsRdsDatasource } from './aws-rds/index.ts';
import { AzureBicepResourceDatasource } from './azure-bicep-resource/index.ts';
import { AzurePipelinesTasksDatasource } from './azure-pipelines-tasks/index.ts';
import { AzureTagsDatasource } from './azure-tags/index.ts';
import { BazelDatasource } from './bazel/index.ts';
import { BitbucketServerTagsDatasource } from './bitbucket-server-tags/index.ts';
import { BitbucketTagsDatasource } from './bitbucket-tags/index.ts';
import { BitriseDatasource } from './bitrise/index.ts';
import { BuildpacksRegistryDatasource } from './buildpacks-registry/index.ts';
import { CdnjsDatasource } from './cdnjs/index.ts';
import { ClojureDatasource } from './clojure/index.ts';
import { ConanDatasource } from './conan/index.ts';
import { CondaDatasource } from './conda/index.ts';
import { CpanDatasource } from './cpan/index.ts';
import { CrateDatasource } from './crate/index.ts';
import { CustomDatasource } from './custom/index.ts';
import { DartDatasource } from './dart/index.ts';
import { DartVersionDatasource } from './dart-version/index.ts';
import { DebDatasource } from './deb/index.ts';
import { DenoDatasource } from './deno/index.ts';
import { DevboxDatasource } from './devbox/index.ts';
import { DockerDatasource } from './docker/index.ts';
import { DotnetVersionDatasource } from './dotnet-version/index.ts';
import { ElmPackageDatasource } from './elm-package/index.ts';
import { EndoflifeDateDatasource } from './endoflife-date/index.ts';
import { FlutterVersionDatasource } from './flutter-version/index.ts';
import { ForgejoReleasesDatasource } from './forgejo-releases/index.ts';
import { ForgejoTagsDatasource } from './forgejo-tags/index.ts';
import { GalaxyDatasource } from './galaxy/index.ts';
import { GalaxyCollectionDatasource } from './galaxy-collection/index.ts';
import { GitRefsDatasource } from './git-refs/index.ts';
import { GitTagsDatasource } from './git-tags/index.ts';
import { GiteaReleasesDatasource } from './gitea-releases/index.ts';
import { GiteaTagsDatasource } from './gitea-tags/index.ts';
import { GithubDigestDatasource } from './github-digest/index.ts';
import { GithubReleaseAttachmentsDatasource } from './github-release-attachments/index.ts';
import { GithubReleasesDatasource } from './github-releases/index.ts';
import { GithubRunnersDatasource } from './github-runners/index.ts';
import { GithubTagsDatasource } from './github-tags/index.ts';
import { GitlabPackagesDatasource } from './gitlab-packages/index.ts';
import { GitlabReleasesDatasource } from './gitlab-releases/index.ts';
import { GitlabTagsDatasource } from './gitlab-tags/index.ts';
import { GlasskubePackagesDatasource } from './glasskube-packages/index.ts';
import { GoDatasource } from './go/index.ts';
import { GolangVersionDatasource } from './golang-version/index.ts';
import { GradleVersionDatasource } from './gradle-version/index.ts';
import { HackageDatasource } from './hackage/index.ts';
import { HelmDatasource } from './helm/index.ts';
import { HermitDatasource } from './hermit/index.ts';
import { HexDatasource } from './hex/index.ts';
import { HexpmBobDatasource } from './hexpm-bob/index.ts';
import { JavaVersionDatasource } from './java-version/index.ts';
import { JenkinsPluginsDatasource } from './jenkins-plugins/index.ts';
import { JsrDatasource } from './jsr/index.ts';
import { KubernetesApiDatasource } from './kubernetes-api/index.ts';
import { MavenDatasource } from './maven/index.ts';
import { NextcloudDatasource } from './nextcloud/index.ts';
import { NodeVersionDatasource } from './node-version/index.ts';
import { NpmDatasource } from './npm/index.ts';
import { NugetDatasource } from './nuget/index.ts';
import { OrbDatasource } from './orb/index.ts';
import { PackagistDatasource } from './packagist/index.ts';
import { PodDatasource } from './pod/index.ts';
import { PuppetForgeDatasource } from './puppet-forge/index.ts';
import { PypiDatasource } from './pypi/index.ts';
import { PythonVersionDatasource } from './python-version/index.ts';
import { RepologyDatasource } from './repology/index.ts';
import { RpmDatasource } from './rpm/index.ts';
import { RubyVersionDatasource } from './ruby-version/index.ts';
import { RubygemsDatasource } from './rubygems/index.ts';
import { RustVersionDatasource } from './rust-version/index.ts';
import { SbtPackageDatasource } from './sbt-package/index.ts';
import { SbtPluginDatasource } from './sbt-plugin/index.ts';
import { TerraformModuleDatasource } from './terraform-module/index.ts';
import { TerraformProviderDatasource } from './terraform-provider/index.ts';
import type { DatasourceApi } from './types.ts';
import { TypstDatasource } from './typst/index.ts';
import { Unity3dDatasource } from './unity3d/index.ts';
import { Unity3dPackagesDatasource } from './unity3d-packages/index.ts';
const api = new Map<string, DatasourceApi>();
export default api;
api.set(ApkDatasource.id, new ApkDatasource());
api.set(ArtifactoryDatasource.id, new ArtifactoryDatasource());
api.set(AwsEKSAddonDataSource.id, new AwsEKSAddonDataSource());
api.set(AwsMachineImageDatasource.id, new AwsMachineImageDatasource());
api.set(AwsRdsDatasource.id, new AwsRdsDatasource());
api.set(AzureBicepResourceDatasource.id, new AzureBicepResourceDatasource());
api.set(AzurePipelinesTasksDatasource.id, new AzurePipelinesTasksDatasource());
api.set(AzureTagsDatasource.id, new AzureTagsDatasource());
api.set(BazelDatasource.id, new BazelDatasource());
api.set(BitbucketServerTagsDatasource.id, new BitbucketServerTagsDatasource());
api.set(BitbucketTagsDatasource.id, new BitbucketTagsDatasource());
api.set(BitriseDatasource.id, new BitriseDatasource());
api.set(BuildpacksRegistryDatasource.id, new BuildpacksRegistryDatasource());
api.set(CdnjsDatasource.id, new CdnjsDatasource());
api.set(ClojureDatasource.id, new ClojureDatasource());
api.set(ConanDatasource.id, new ConanDatasource());
api.set(CondaDatasource.id, new CondaDatasource());
api.set(CpanDatasource.id, new CpanDatasource());
api.set(CrateDatasource.id, new CrateDatasource());
api.set(CustomDatasource.id, new CustomDatasource());
api.set(DartDatasource.id, new DartDatasource());
api.set(DartVersionDatasource.id, new DartVersionDatasource());
api.set(DebDatasource.id, new DebDatasource());
api.set(DenoDatasource.id, new DenoDatasource());
api.set(DevboxDatasource.id, new DevboxDatasource());
api.set(DockerDatasource.id, new DockerDatasource());
api.set(DotnetVersionDatasource.id, new DotnetVersionDatasource());
api.set(ElmPackageDatasource.id, new ElmPackageDatasource());
api.set(EndoflifeDateDatasource.id, new EndoflifeDateDatasource());
api.set(FlutterVersionDatasource.id, new FlutterVersionDatasource());
api.set(ForgejoReleasesDatasource.id, new ForgejoReleasesDatasource());
api.set(ForgejoTagsDatasource.id, new ForgejoTagsDatasource());
api.set(GalaxyDatasource.id, new GalaxyDatasource());
api.set(GalaxyCollectionDatasource.id, new GalaxyCollectionDatasource());
api.set(GitRefsDatasource.id, new GitRefsDatasource());
api.set(GitTagsDatasource.id, new GitTagsDatasource());
api.set(GiteaReleasesDatasource.id, new GiteaReleasesDatasource());
api.set(GiteaTagsDatasource.id, new GiteaTagsDatasource());
api.set(GithubDigestDatasource.id, new GithubDigestDatasource());
api.set(
GithubReleaseAttachmentsDatasource.id,
new GithubReleaseAttachmentsDatasource(),
);
api.set(GithubReleasesDatasource.id, new GithubReleasesDatasource());
api.set(GithubRunnersDatasource.id, new GithubRunnersDatasource());
api.set(GithubTagsDatasource.id, new GithubTagsDatasource());
api.set(GitlabPackagesDatasource.id, new GitlabPackagesDatasource());
api.set(GitlabReleasesDatasource.id, new GitlabReleasesDatasource());
api.set(GitlabTagsDatasource.id, new GitlabTagsDatasource());
api.set(GlasskubePackagesDatasource.id, new GlasskubePackagesDatasource());
api.set(GoDatasource.id, new GoDatasource());
api.set(GolangVersionDatasource.id, new GolangVersionDatasource());
api.set(GradleVersionDatasource.id, new GradleVersionDatasource());
api.set(HackageDatasource.id, new HackageDatasource());
api.set(HelmDatasource.id, new HelmDatasource());
api.set(HermitDatasource.id, new HermitDatasource());
api.set(HexDatasource.id, new HexDatasource());
api.set(HexpmBobDatasource.id, new HexpmBobDatasource());
api.set(JavaVersionDatasource.id, new JavaVersionDatasource());
api.set(JenkinsPluginsDatasource.id, new JenkinsPluginsDatasource());
api.set(JsrDatasource.id, new JsrDatasource());
api.set(KubernetesApiDatasource.id, new KubernetesApiDatasource());
api.set(MavenDatasource.id, new MavenDatasource());
api.set(NextcloudDatasource.id, new NextcloudDatasource());
api.set(NodeVersionDatasource.id, new NodeVersionDatasource());
api.set(NpmDatasource.id, new NpmDatasource());
api.set(NugetDatasource.id, new NugetDatasource());
api.set(OrbDatasource.id, new OrbDatasource());
api.set(PackagistDatasource.id, new PackagistDatasource());
api.set(PodDatasource.id, new PodDatasource());
api.set(PuppetForgeDatasource.id, new PuppetForgeDatasource());
api.set(PypiDatasource.id, new PypiDatasource());
api.set(PythonVersionDatasource.id, new PythonVersionDatasource());
api.set(RepologyDatasource.id, new RepologyDatasource());
api.set(RpmDatasource.id, new RpmDatasource());
api.set(RubyVersionDatasource.id, new RubyVersionDatasource());
api.set(RubygemsDatasource.id, new RubygemsDatasource());
api.set(RustVersionDatasource.id, new RustVersionDatasource());
api.set(SbtPackageDatasource.id, new SbtPackageDatasource());
api.set(SbtPluginDatasource.id, new SbtPluginDatasource());
api.set(TerraformModuleDatasource.id, new TerraformModuleDatasource());
api.set(TerraformProviderDatasource.id, new TerraformProviderDatasource());
api.set(TypstDatasource.id, new TypstDatasource());
api.set(Unity3dDatasource.id, new Unity3dDatasource());
api.set(Unity3dPackagesDatasource.id, new Unity3dPackagesDatasource());