@coralogix/browser
Version:
Official Coralogix SDK for browsers
64 lines (63 loc) • 1.99 kB
TypeScript
import { eventWithTime } from '@rrweb/types';
import { SlimDOMOptions } from 'rrweb-snapshot';
import { CoralogixEventType } from '../types';
import { recordOptions } from 'rrweb';
export interface SessionRecordingConfig extends Omit<recordOptions<eventWithTime>, 'emit' | 'packFn' | 'plugins' | 'hooks' | 'slimDOMOptions'> {
enable: boolean;
autoStartSessionRecording: boolean;
recordConsoleEvents?: boolean;
maxMutations?: number;
excludeDOMOptions?: SlimDOMOptions;
sessionRecordingSampleRate?: number;
workerUrl?: string;
}
export interface SessionWithErrorConfig {
enable: boolean;
maxRumEvents?: number;
maxRecordTime?: number;
instrumentationsToSend?: Partial<Record<CoralogixEventType, boolean>>;
}
export interface SessionConfig {
sessionSampleRate?: number;
alwaysTrackSessionsWithErrors?: boolean;
onlyWithErrorConfig?: SessionWithErrorConfig;
keepSessionAfterReload?: boolean;
}
export type RecordEvent = eventWithTime;
export type RecordPluginEvent<T = any> = {
type: SessionRecordingEventType.Plugin;
data: {
plugin: string;
payload: T;
};
timestamp: number;
};
export declare enum SessionRecordingEventType {
DomContentLoaded = 0,
Load = 1,
FullSnapshot = 2,
IncrementalSnapshot = 3,
Meta = 4,
Custom = 5,
Plugin = 6
}
export interface SessionRecordingMetadata {
segmentIndex: number;
segmentSize: number;
segmentTimestamp: number;
sessionId: string;
sessionCreationDate: number;
application: string;
subIndex: number | undefined;
snapshotId?: string;
}
export type SessionRecordingWorkerEvent = 'compressRecordData' | 'splitRecordData' | 'sendRecordData' | 'stopRecording';
export interface SessionRecordingWorkerData {
sessionId: string;
sessionCreationDate: number;
gzipBlob?: Blob;
chunkIndex?: number;
totalChunks?: number;
event: SessionRecordingWorkerEvent;
screenshotId?: string;
}