UNPKG

@backtrace/sdk-core

Version:
97 lines (96 loc) 4.34 kB
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; }