/** * Namecheap API Client - Main Entry Point */ import { NamecheapConfig } from './config.js'; import { HttpClient } from './http-client.js'; import { Domains } from './domains.js'; import { DomainsDns } from './domains-dns.js'; import { DomainsNs } from './domains-ns.js'; import { DomainsTransfer } from './domains-transfer.js'; import type { INamecheapAuth } from './types.js'; // Re-export types for library consumers export * from './types.js'; export { NamecheapConfig } from './config.js'; export { Domains } from './domains.js'; export { DomainsDns } from './domains-dns.js'; export { DomainsNs } from './domains-ns.js'; export { DomainsTransfer } from './domains-transfer.js'; /** * Main Namecheap API client class */ export class NamecheapClient { private config: NamecheapConfig; private httpClient: HttpClient; /** * Domains API module */ public domains: Domains; /** * Domains DNS API module */ public dns: DomainsDns; /** * Domains Nameservers API module */ public ns: DomainsNs; /** * Domains Transfer API module */ public transfer: DomainsTransfer; /** * Create a new Namecheap API client * @param auth Authentication details * @param useSandbox Whether to use the sandbox environment (default: false) */ constructor(auth: INamecheapAuth, useSandbox: boolean = false) { // Initialize configuration this.config = new NamecheapConfig(auth); // Set sandbox mode if requested if (useSandbox) { this.config.enableSandbox(); } // Create HTTP client this.httpClient = new HttpClient(this.config); // Initialize API modules this.domains = new Domains(this.httpClient); this.dns = new DomainsDns(this.httpClient); this.ns = new DomainsNs(this.httpClient); this.transfer = new DomainsTransfer(this.httpClient); } /** * Enable sandbox mode for testing */ enableSandbox(): void { this.config.enableSandbox(); } /** * Disable sandbox mode */ disableSandbox(): void { this.config.disableSandbox(); } /** * Set request timeout * @param ms Timeout in milliseconds */ setTimeout(ms: number): void { this.config.setTimeout(ms); } } /** * Create a new Namecheap API client instance * @param auth Authentication details * @param useSandbox Whether to use the sandbox environment * @returns Namecheap API client */ export function createClient(auth: INamecheapAuth, useSandbox: boolean = false): NamecheapClient { return new NamecheapClient(auth, useSandbox); }