@backtrace/sdk-core
Version:
Backtrace-JavaScript SDK core library
97 lines (96 loc) • 4.34 kB
TypeScript
import { Events } from '../../common/Events.js';
import { BacktraceAttachment } from '../../model/attachment/index.js';
import { BacktraceDatabaseConfiguration } from '../../model/configuration/BacktraceDatabaseConfiguration.js';
import { BacktraceData } from '../../model/data/BacktraceData.js';
import { BacktraceReportSubmission } from '../../model/http/BacktraceReportSubmission.js';
import { BacktraceModule, BacktraceModuleBindData } from '../BacktraceModule.js';
import { SessionFiles } from '../storage/index.js';
import { BacktraceDatabaseEvents } from './BacktraceDatabaseEvents.js';
import { BacktraceDatabaseStorageProvider } from './BacktraceDatabaseStorageProvider.js';
import { AttachmentBacktraceDatabaseRecord, BacktraceDatabaseRecord, BacktraceDatabaseRecordCountByType, ReportBacktraceDatabaseRecord } from './model/BacktraceDatabaseRecord.js';
export declare class BacktraceDatabase extends Events<BacktraceDatabaseEvents> implements BacktraceModule {
private readonly _options;
private readonly _storageProvider;
private readonly _requestHandler;
private readonly _sessionFiles?;
/**
* Determines if the database is enabled.
*/
get enabled(): boolean;
/**
* Abort controller to cancel asynchronous database operations when
* the database is being disabled by the user.
*/
private readonly _abortController;
private readonly _databaseRecordContext;
private readonly _storageProviders;
private readonly _recordLimits;
private readonly _retryInterval;
private _intervalId?;
private _enabled;
constructor(_options: BacktraceDatabaseConfiguration | undefined, _storageProvider: BacktraceDatabaseStorageProvider, _requestHandler: BacktraceReportSubmission, _sessionFiles?: SessionFiles | undefined);
/**
* Starts database integration.
* @returns true if the database started successfully. Otherwise false.
*/
initialize(): boolean;
bind({ client }: BacktraceModuleBindData): void;
/**
* Adds backtrace data to the database
* @param backtraceData diagnostic data object
* @param attachments attachments
* @returns record if database is enabled. Otherwise undefined.
*/
add(backtraceData: BacktraceData, attachments: BacktraceAttachment<unknown>[]): ReportBacktraceDatabaseRecord | undefined;
/**
* Adds Bactrace attachment to the database
* @param backtraceData diagnostic data object
* @param attachment the attachment to add
* @param sessionId session ID to use
* @returns record if database is enabled. Otherwise undefined.
*/
addAttachment(rxid: string, attachment: BacktraceAttachment, sessionId: string): AttachmentBacktraceDatabaseRecord | undefined;
/**
* Returns stored references to Backtrace records
* @returns available records in the database
*/
get(): BacktraceDatabaseRecord[];
/**
* @returns Returns number of records stored in the Database
*/
count(): number;
/**
* @returns Returns number of records by type stored in the Database
*/
countByType(): BacktraceDatabaseRecordCountByType;
/**
* Disables database integration. After running the dispose method, you cannot
* execute any database operations.
*/
dispose(): void;
/**
* Removes the database record/records
* @param recordOrRecords database records
*/
remove(recordOrRecords: BacktraceDatabaseRecord | BacktraceDatabaseRecord[]): void;
addStorageProvider(storageProvider: BacktraceDatabaseStorageProvider): void;
/**
* Sends all records available in the database to Backtrace and removes them
* no matter if the submission process was successful or not.
* @param abortSignal optional abort signal to cancel sending requests
*/
flush(abortSignal?: AbortSignal): Promise<void>;
/**
* Sends all records available in the database to Backtrace.
* @param abortSignal optional abort signal to cancel sending requests
*/
send(abortSignal?: AbortSignal): Promise<void>;
/**
* Prepare database to insert records
* @param forRecords records for which to update the database
*/
private prepareDatabase;
private loadReports;
private setupDatabaseAutoSend;
private lockSessionWithRecord;
}