UNPKG

@lumberjack-sdk/browser

Version:

Browser error tracking, custom events, and session replay for Lumberjack

105 lines (100 loc) 3.17 kB
import { recordOptions, eventWithTime } from 'rrweb'; export { eventWithTime, recordOptions } from 'rrweb'; interface Exporter { export(events: FrontendEvent[], sessionId: string, user_context: UserContext): Promise<void>; } interface FrontendConfig { apiKey: string; projectName: string; endpoint?: string; exporter?: Exporter; bufferSize?: number; flushInterval?: number; maxSessionLength?: number; enableSessionReplay?: boolean; replayPrivacyMode?: "strict" | "standard"; blockSelectors?: string[]; sessionReplayConfig?: recordOptions<eventWithTime>; errorSampleRate?: number; replaySampleRate?: number; debug?: boolean; } interface UserContext { id: string; email?: string; username?: string; name?: string; [key: string]: any; } interface FrontendEvent { type: "error" | "session_replay" | "custom"; timestamp: number; sessionId: string; userId?: string; userContext?: UserContext; data: ErrorData | ReplayData | CustomEventData; } interface ErrorData { message: string; stack?: string; filename?: string; lineno?: number; colno?: number; type: "error" | "unhandledRejection" | "resourceError"; } interface ReplayData { events: any[]; startTime: number; endTime: number; } interface CustomEventData { name: string; properties?: Record<string, any>; } interface Session { id: string; startTime: number; lastActivity: number; hasReplay: boolean; } declare class HttpExporter implements Exporter { private apiKey; private projectName; private endpoint; constructor(apiKey: string, projectName: string, endpoint?: string); export(events: FrontendEvent[], sessionId: string, userContext: UserContext): Promise<void>; } declare class ConsoleExporter implements Exporter { export(events: FrontendEvent[], sessionId: string): Promise<void>; } declare class LumberjackSDK { private config; private sessionManager?; private buffer?; private errorTracker?; private sessionReplay?; private exporter; private userContext; private isStarted; constructor(config: FrontendConfig); start(userContext: UserContext): void; private validateConfig; private trackEvent; private flushEvents; private setupLifecycleHandlers; setUser(user: UserContext): void; getUser(): UserContext | null; clearUser(): void; track(eventName: string, properties?: Record<string, any>): void; captureError(error: Error, context?: Record<string, any>): void; getSession(): Session | null; getSessionId(): string | null; isRecording(): boolean; getSessionDuration(): number; getSessionRemainingTime(): number; shutdown(): Promise<void>; } declare function init(config: FrontendConfig): LumberjackSDK; declare function getInstance(): LumberjackSDK | null; declare function start(userContext: UserContext): (() => Promise<void>) | null; export { ConsoleExporter, type CustomEventData, type Exporter, type FrontendConfig, type FrontendEvent, HttpExporter, type Session, type UserContext, getInstance, init, start };