import type { IDnsProviderClient } from './interfaces.js'; import type { TDnsProviderType, TDnsProviderCredentials, } from '../../../ts_interfaces/data/dns-provider.js'; import { CloudflareDnsProvider } from './cloudflare.provider.js'; /** * Instantiate a runtime DNS provider client from a stored DnsProviderDoc. * * @throws if the provider type is not supported. */ export function createDnsProvider( type: TDnsProviderType, credentials: TDnsProviderCredentials, ): IDnsProviderClient { switch (type) { case 'cloudflare': { if (credentials.type !== 'cloudflare') { throw new Error( `createDnsProvider: type mismatch — provider type is 'cloudflare' but credentials.type is '${credentials.type}'`, ); } return new CloudflareDnsProvider(credentials.apiToken); } default: { const _exhaustive: never = type; throw new Error(`createDnsProvider: unsupported provider type: ${_exhaustive}`); } } }