import { OAuthProvider, ProviderConfig } from "./OAuthProvider"; import { GitHubProvider } from "./GitHubProvider"; import { GoogleProvider } from "./GoogleProvider"; /** * Supported OAuth provider names */ export type ProviderName = "github" | "google"; /** * Factory function to create OAuth provider instances * * @param providerName - Name of the OAuth provider * @param config - Provider configuration * @returns Instance of the requested OAuth provider * @throws Error if provider is not supported */ export function getProvider(providerName: ProviderName, config: ProviderConfig): OAuthProvider { switch (providerName) { case "github": return new GitHubProvider(config); case "google": return new GoogleProvider(config); default: throw new Error(`Unsupported OAuth provider: ${providerName}`); } }