diff --git a/packages/browser/src/transports/base.ts b/packages/browser/src/transports/base.ts index 00f0712b26d9..a193975cf64f 100644 --- a/packages/browser/src/transports/base.ts +++ b/packages/browser/src/transports/base.ts @@ -68,12 +68,17 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public recordLostEvent(type: Outcome, category: SentryRequestType): void { + public recordLostEvent(reason: Outcome, category: SentryRequestType): void { if (!this.options.sendClientReport) { return; } - const key = `${type}:${CATEGORY_MAPPING[category]}`; - logger.log(`Adding ${key} outcome`); + // We want to track each category (event, transaction, session) separately + // but still keep the distinction between different type of outcomes. + // We could use nested maps, but it's much easier to read and type this way. + // A correct type for map-based implementation if we want to go that route + // would be `Partial>>>` + const key = `${CATEGORY_MAPPING[category]}:${reason}}`; + logger.log(`Adding outcome: ${key}`); this._outcomes[key] = (this._outcomes[key] ?? 0) + 1; } @@ -91,6 +96,7 @@ export abstract class BaseTransport implements Transport { } const outcomes = this._outcomes; + this._outcomes = {}; // Nothing to send if (!Object.keys(outcomes).length) { @@ -118,8 +124,6 @@ export abstract class BaseTransport implements Transport { const envelope = `${itemHeaders}\n${item}`; navigator.sendBeacon(url, envelope); - - this._outcomes = {}; } /** diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index 6b0209b512e8..46d5d78eb1ae 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -187,7 +187,7 @@ export abstract class BaseClient implement * @inheritDoc */ public getTransport(): Transport { - return this.getTransport(); + return this._getBackend().getTransport(); } /** diff --git a/packages/types/src/options.ts b/packages/types/src/options.ts index 3f58c25ff8bd..196ca466ce73 100644 --- a/packages/types/src/options.ts +++ b/packages/types/src/options.ts @@ -133,7 +133,8 @@ export interface Options { autoSessionTracking?: boolean; /** - * Automatically send SDK Client Report + * Send SDK Client Reports. + * By default, Client Reports are enabled. */ sendClientReports?: boolean;