UNPKG

@mirad-work/sms-core

Version:

A framework-agnostic TypeScript SMS service core with provider abstraction for Iranian SMS providers

62 lines 2.29 kB
import { ISmsDriver, ISmsMessage, ISmsResponse } from "../interfaces/sms-driver.interface"; import { IHttpClient } from "../interfaces/http-client.interface"; import { HttpResponse } from "../types/driver-types"; /** * Base configuration interface for all drivers */ export interface IBaseDriverConfig { url: string; timeout?: number; } /** * Abstract base class for all SMS drivers * Provides common functionality and enforces interface implementation */ export declare abstract class BaseSmsDriver implements ISmsDriver { protected readonly httpClient: IHttpClient; protected readonly config: IBaseDriverConfig; constructor(config: IBaseDriverConfig, httpClient: IHttpClient); abstract verify(_message: ISmsMessage): Promise<ISmsResponse>; /** * Build default headers for HTTP requests */ protected buildHeaders(additionalHeaders?: Record<string, string>): Record<string, string>; /** * Build URL by combining base URL with endpoint */ protected buildUrl(endpoint: string): string; /** * Validate SMS message before sending */ protected validateMessage(message: ISmsMessage): void; /** * Validate driver configuration */ private validateConfig; /** * Handle HTTP errors and convert to appropriate exceptions */ protected handleHttpRequest<T>(requestFn: () => Promise<HttpResponse<T>>): Promise<HttpResponse<T>>; /** * Handle and standardize driver errors */ protected handleError(error: unknown, context?: string): never; /** * Create a standardized success response */ protected createSuccessResponse(data: unknown, messageId?: string): ISmsResponse; /** * Create a standardized error response */ protected createErrorResponse(error: string, errorCode?: string, data?: unknown): ISmsResponse; /** * Extract message ID from provider response * This method can be overridden by concrete drivers if needed */ protected extractMessageId(response: unknown): string | undefined; /** * Log request/response for debugging (can be overridden) */ protected log(level: "info" | "error" | "warn" | "debug", message: string, data?: unknown): void; } //# sourceMappingURL=base-driver.d.ts.map