import type { HttpClientFactory, Provider } from "./base"; import { PyPiProvider } from "./pypi"; import { NpmProvider } from "./npm"; import { CratesProvider } from "./crates"; import { GoDocsProvider } from "./godocs"; import { ZigProvider } from "./zig"; import { DockerHubProvider } from "./dockerhub"; import { GitHubProvider } from "./github"; import { GcpProvider } from "./gcp"; import { LogScaleProvider } from "./logscale"; export type ProviderConstructor = new (httpClientFactory: HttpClientFactory) => Provider; /** * Registry of all providers. Mirrors python `providers/__init__.py` discover_providers(). * * Key is the provider name (matches ProviderMetadata.name). Order matches the python * auto-discovery order (alphabetical by filename): crates, dockerhub, gcp, github, godocs, * logscale, npm, pypi, zig. The aggregator iterates providers; order affects cache-key * composition but not the result keys, so alphabetical is fine. */ export function discoverProviders(): Record { return { crates: CratesProvider, dockerhub: DockerHubProvider, gcp: GcpProvider, github: GitHubProvider, godocs: GoDocsProvider, logscale: LogScaleProvider, npm: NpmProvider, pypi: PyPiProvider, zig: ZigProvider, }; }