namecheap/ts/index.ts

102 lines
2.5 KiB
TypeScript
Raw Permalink Normal View History

2025-04-02 15:19:18 +00:00
/**
* 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);
}