All files / src/handlers base-handler.ts

100% Statements 5/5
75% Branches 3/4
100% Functions 2/2
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40                                                      487x 487x 487x       21x 21x          
import { Crawl4AIService } from '../crawl4ai-service.js';
import { AxiosInstance } from 'axios';
 
// Error handling types
export interface ErrorWithResponse {
  response?: {
    data?: {
      detail?: string;
    };
  };
  message?: string;
}
 
export interface SessionInfo {
  id: string;
  created_at: Date;
  last_used: Date;
  initial_url?: string;
  metadata?: Record<string, unknown>;
}
 
export abstract class BaseHandler {
  protected service: Crawl4AIService;
  protected axiosClient: AxiosInstance;
  protected sessions: Map<string, SessionInfo>;
 
  constructor(service: Crawl4AIService, axiosClient: AxiosInstance, sessions: Map<string, SessionInfo>) {
    this.service = service;
    this.axiosClient = axiosClient;
    this.sessions = sessions;
  }
 
  protected formatError(error: unknown, operation: string): Error {
    const errorWithResponse = error as ErrorWithResponse;
    return new Error(
      `Failed to ${operation}: ${errorWithResponse.response?.data?.detail || (error instanceof Error ? error.message : String(error))}`,
    );
  }
}