@lumberjack-sdk/browser
Version:
Browser error tracking, custom events, and session replay for Lumberjack
105 lines (100 loc) • 3.17 kB
TypeScript
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 };