57 lines · 1.6 KB · TypeScript
RawDownload
import {  ErrorCodes,  MapTimeoutError,  RacedRedirectError,  ScrapeJobTimeoutError,  TransportableError,  UnknownError,} from "./error";import {  ActionError,  DNSResolutionError,  UnsupportedFileError,  PDFAntibotError,  PDFInsufficientTimeError,  NoEnginesLeftError,  ZDRViolationError,  PDFPrefetchFailed,  SiteError,  SSLError,} from "../scraper/scrapeURL/error"; // TODO: figure out correct typing for thisconst errorMap: Record<ErrorCodes, any> = {  SCRAPE_TIMEOUT: ScrapeJobTimeoutError,  MAP_TIMEOUT: MapTimeoutError,  UNKNOWN_ERROR: UnknownError,  SCRAPE_ALL_ENGINES_FAILED: NoEnginesLeftError,  SCRAPE_SSL_ERROR: SSLError,  SCRAPE_SITE_ERROR: SiteError,  SCRAPE_PDF_PREFETCH_FAILED: PDFPrefetchFailed,  SCRAPE_ZDR_VIOLATION_ERROR: ZDRViolationError,  SCRAPE_DNS_RESOLUTION_ERROR: DNSResolutionError,  SCRAPE_PDF_INSUFFICIENT_TIME_ERROR: PDFInsufficientTimeError,  SCRAPE_PDF_ANTIBOT_ERROR: PDFAntibotError,  SCRAPE_UNSUPPORTED_FILE_ERROR: UnsupportedFileError,  SCRAPE_ACTION_ERROR: ActionError,  SCRAPE_RACED_REDIRECT_ERROR: RacedRedirectError,   // Zod errors  BAD_REQUEST: null,  BAD_REQUEST_INVALID_JSON: null,}; export function serializeTransportableError(error: TransportableError) {  return `${error.code}|${JSON.stringify(error.serialize())}`;} export function deserializeTransportableError(  data: string,): InstanceType<(typeof errorMap)[keyof typeof errorMap]> | null {  const [code, ...serialized] = data.split("|");  const x = errorMap[code];  if (!x) {    return null;  }  return x.deserialize(code, JSON.parse(serialized.join("|")));}