@chaseleto/sessions-sdk
Version:
Privacy-conscious session recording SDK for self-hosted session tracking
83 lines • 2.35 kB
TypeScript
export interface SessionSDKOptions {
/** API endpoint for sending session data */
endpoint?: string;
/** Custom attributes to attach to all sessions */
attributes?: Record<string, any>;
/** User ID to associate with sessions */
userId?: string;
/** Project ID for the session */
projectId?: string;
/** Whether to capture console logs */
captureConsole?: boolean;
/** Whether to capture network requests */
captureNetwork?: boolean;
/** Sampling rate (0-1) for session recording */
samplingRate?: number;
/** Maximum session duration in milliseconds */
maxSessionDuration?: number;
/** Upload interval in milliseconds */
uploadInterval?: number;
/** Whether to respect Do Not Track headers */
respectDNT?: boolean;
/** Custom headers to include in requests */
headers?: Record<string, string>;
}
export interface SessionData {
sessionId: string;
projectId?: string;
userId?: string;
attributes: Record<string, any>;
metadata: SessionMetadata;
events: SessionEvent[];
consoleLogs: ConsoleLog[];
networkRequests: NetworkRequest[];
timestamp: number;
duration: number;
}
export interface SessionMetadata {
userAgent: string;
url: string;
referrer: string;
viewport: {
width: number;
height: number;
};
timestamp: number;
timezone: string;
language: string;
}
export interface SessionEvent {
type: 'rrweb';
data: any;
timestamp: number;
}
export interface ConsoleLog {
level: 'log' | 'warn' | 'error' | 'info' | 'debug';
message: string;
args: any[];
timestamp: number;
stack?: string;
}
export interface NetworkRequest {
method: string;
url: string;
status?: number;
statusText?: string;
requestHeaders?: Record<string, string>;
responseHeaders?: Record<string, string>;
requestBody?: any;
responseBody?: any;
duration: number;
timestamp: number;
error?: string;
}
export interface UploadQueueItem {
sessionId: string;
data: SessionData;
retries: number;
timestamp: number;
}
export type EventCallback = (event: SessionEvent) => void;
export type LogCallback = (log: ConsoleLog) => void;
export type NetworkCallback = (request: NetworkRequest) => void;
//# sourceMappingURL=types.d.ts.map