@betterbugs/web-sdk
Version:
A web sdk package for Betterbugs
136 lines (121 loc) • 3.63 kB
TypeScript
declare module '@betterbugs/web-sdk' {
export interface BetterBugsStylesConfig {
theme?: 'light' | 'dark';
primaryColor?: string;
primaryTextColor?: string;
}
export interface BetterbugsOptions {
styles?: BetterBugsStylesConfig;
email?: string;
apiKey: string;
mainHeading?: string;
emailFieldLabel?: string;
emailFieldPlaceholder?: string;
titleFieldLabel?: string;
titleFieldPlaceholder?: string;
descriptionFieldLabel?: string;
descriptionFieldPlaceholder?: string;
metaData?: Record<string | number, string | number | null>;
// captureRewindOnScreenshot?: boolean;
recordType?: 'recordVideo' | 'domRecord';
// bugSuccessComponent?: React.ReactNode | string;
successMessageHeaderText?: string;
successMessageSubHeaderText?: string;
position?: {
top?: string;
left?: string;
bottom?: string;
right?: string;
};
mode?: 'development' | 'production';
// enableRewind?: boolean;
enableAnnotation?: boolean;
widgetOpen?: boolean;
showActionButton?: boolean;
maxRecordingMinutes?: number;
triggerEvent?: (event: string, data?: unknown) => void;
actionButtonComponent?: React.ReactNode | string;
disableScreenshot?: boolean;
disableRecording?: boolean;
}
export interface BugReportData {
title: string;
description: string;
screenshot?: string;
recording?: string;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
logs?: any[];
metaData?: Record<string | number, string | number | null>;
}
export type EventCallback = (data: unknown) => void;
export type BetterbugsEvent =
| 'screenshot'
| 'recordingStart'
| 'recordingStop'
| 'bugSubmit'
| 'apiKeyUpdate'
| 'emailUpdate'
| 'metaDataUpdate'
| 'captureRewindOnScreenshotUpdate'
| 'recordTypeUpdate'
| 'positionUpdate'
| 'modeUpdate'
| 'enableRewind'
| 'enableAnnotation'
| 'widgetOpen'
| 'widgetClose'
| 'showActionButton'
| 'hideActionButton'
| 'sessionCreated'
| 'recordingPreviewOpen'
| 'recordingPreviewClose';
export class Betterbugs {
constructor(options: BetterbugsOptions);
// Getters
// getAPIKey(): string;
getEmail(): string;
getMetadata(): Record<string | number, string | number | null>;
getRecordType(): 'recordVideo' | 'domRecord';
setRecordType(recordType: 'recordVideo' | 'domRecord'): void;
getWidgetOpen(): boolean;
getPosition(): {
top?: string;
left?: string;
bottom?: string;
right?: string;
};
destroy(): void;
getMode(): 'development' | 'production';
getShowActionButton(): boolean;
// Setters
setAPIKey(apiKey: string): void;
setEmail(email: string): void;
setMetadata(
metaData: Record<string | number, string | number | null>,
): void;
setPosition(position: {
top?: string;
left?: string;
bottom?: string;
right?: string;
}): void;
setStyles(styles: BetterBugsStylesConfig): void;
getStyles(): BetterBugsStylesConfig;
// Widget controls
openWidget(): void;
closeWidget(): void;
show(): void;
hide(): void;
// Recording methods
startRecording(): void;
stopRecording(): void;
// Screenshot method
captureScreenshot(): void;
// Bug submission
submitBug(data: BugReportData): void;
// Event handling
on(event: BetterbugsEvent, callback: EventCallback): void;
off(event: BetterbugsEvent, callback: EventCallback): void;
}
export default Betterbugs;
}