Skip to content

Commit f58cc79

Browse files
committed
feature: Add support for the session init event.
1 parent 2ef1486 commit f58cc79

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

packages/telemetry/browser-telemetry/__tests__/BrowserTelemetryImpl.test.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ it('limits pending events to maxPendingEvents', () => {
6767

6868
telemetry.register(mockClient);
6969

70-
// Should only see the last 2 errors tracked
71-
expect(mockClient.track).toHaveBeenCalledTimes(2);
70+
// Should only see the the session init event and last 2 errors tracked
71+
expect(mockClient.track).toHaveBeenCalledTimes(3);
7272
expect(mockClient.track).toHaveBeenCalledWith(
7373
'$ld:telemetry:error',
7474
expect.objectContaining({
@@ -522,3 +522,15 @@ it('uses the client logger when no logger is provided', () => {
522522
'LaunchDarkly - Browser Telemetry: Error applying breadcrumb filters: Error: Filter error',
523523
);
524524
});
525+
526+
it('sends session init event when client is registered', () => {
527+
const telemetry = new BrowserTelemetryImpl(defaultOptions);
528+
telemetry.register(mockClient);
529+
530+
expect(mockClient.track).toHaveBeenCalledWith(
531+
'$ld:telemetry:session:init',
532+
expect.objectContaining({
533+
sessionId: expect.any(String),
534+
}),
535+
);
536+
});

packages/telemetry/browser-telemetry/src/BrowserTelemetryImpl.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import { getTraceKit } from './vendor/TraceKit';
2828

2929
const CUSTOM_KEY_PREFIX = '$ld:telemetry';
3030
const ERROR_KEY = `${CUSTOM_KEY_PREFIX}:error`;
31-
const SESSION_CAPTURE_KEY = `${CUSTOM_KEY_PREFIX}:sessionCapture`;
31+
const SESSION_INIT_KEY = `${CUSTOM_KEY_PREFIX}:session:init`;
3232
const GENERIC_EXCEPTION = 'generic';
3333
const NULL_EXCEPTION_MESSAGE = 'exception was null or undefined';
3434
const MISSING_MESSAGE = 'exception had no message';
@@ -163,6 +163,9 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry {
163163
// When the client is registered, we need to set the logger again, because we may be able to use the client's
164164
// logger.
165165
this._setLogger();
166+
167+
this._client.track(SESSION_INIT_KEY, { sessionId: this._sessionId });
168+
166169
this._pendingEvents.forEach((event) => {
167170
this._client?.track(event.type, event.data);
168171
});
@@ -237,10 +240,6 @@ export default class BrowserTelemetryImpl implements BrowserTelemetry {
237240
this.captureError(errorEvent.error);
238241
}
239242

240-
captureSession(sessionEvent: EventData): void {
241-
this._capture(SESSION_CAPTURE_KEY, { ...sessionEvent, breadcrumbs: [...this._breadcrumbs] });
242-
}
243-
244243
private _applyBreadcrumbFilters(
245244
breadcrumb: Breadcrumb,
246245
filters: BreadcrumbFilter[],

0 commit comments

Comments
 (0)