Skip to content

Commit d30c659

Browse files
committed
ref(replay): Make some things public
1 parent 7548e64 commit d30c659

File tree

7 files changed

+40
-34
lines changed

7 files changed

+40
-34
lines changed

packages/replay/src/coreHandlers/handleFetch.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ export function handleFetch(handlerData: FetchHandlerData): null | ReplayPerform
4646

4747
export function handleFetchSpanListener(replay: ReplayContainer): (handlerData: FetchHandlerData) => void {
4848
return (handlerData: FetchHandlerData) => {
49-
// @ts-ignore private
50-
if (!replay._isEnabled) {
49+
if (!replay.isEnabled()) {
5150
return;
5251
}
5352

packages/replay/src/coreHandlers/handleGlobalEvent.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,12 @@ export function handleGlobalEventListener(replay: ReplayContainer): (event: Even
2626
// Collect traceIds in _context regardless of `_waitForError` - if it's true,
2727
// _context gets cleared on every checkout
2828
if (event.type === 'transaction') {
29-
// @ts-ignore private
30-
replay._context.traceIds.add(String(event.contexts?.trace?.trace_id || ''));
29+
replay.getContext().traceIds.add(String(event.contexts?.trace?.trace_id || ''));
3130
return event;
3231
}
3332

3433
// XXX: Is it safe to assume that all other events are error events?
35-
// @ts-ignore: Type 'undefined' is not assignable to type 'string'.ts(2345)
36-
replay._context.errorIds.add(event.event_id);
34+
replay.getContext().errorIds.add(event.event_id as string);
3735

3836
const exc = event.exception?.values?.[0];
3937
addInternalBreadcrumb({
@@ -56,10 +54,7 @@ export function handleGlobalEventListener(replay: ReplayContainer): (event: Even
5654
// than the session replay.
5755
await replay.flushImmediate();
5856

59-
// @ts-ignore private
60-
if (replay._stopRecording) {
61-
// @ts-ignore private
62-
replay._stopRecording();
57+
if (replay.stopRecording()) {
6358
// Reset all "capture on error" configuration before
6459
// starting a new recording
6560
// @ts-ignore private

packages/replay/src/coreHandlers/handleHistory.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ function handleHistory(handlerData: HistoryHandlerData): ReplayPerformanceEntry
2424

2525
export function handleHistorySpanListener(replay: ReplayContainer): (handlerData: HistoryHandlerData) => void {
2626
return (handlerData: HistoryHandlerData) => {
27-
// @ts-ignore private
28-
if (!replay._isEnabled) {
27+
if (!replay.isEnabled()) {
2928
return;
3029
}
3130

@@ -36,8 +35,7 @@ export function handleHistorySpanListener(replay: ReplayContainer): (handlerData
3635
}
3736

3837
// Need to collect visited URLs
39-
// @ts-ignore private
40-
replay._context.urls.push(result.name);
38+
replay.getContext().urls.push(result.name);
4139
replay.triggerUserActivity();
4240

4341
replay.addUpdate(() => {

packages/replay/src/coreHandlers/handleXhr.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ function handleXhr(handlerData: XhrHandlerData): ReplayPerformanceEntry | null {
6565

6666
export function handleXhrSpanListener(replay: ReplayContainer): (handlerData: XhrHandlerData) => void {
6767
return (handlerData: XhrHandlerData) => {
68-
// @ts-ignore private
69-
if (!replay._isEnabled) {
68+
if (!replay.isEnabled()) {
7069
return;
7170
}
7271

packages/replay/src/replay.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,16 @@ export class ReplayContainer {
127127
});
128128
}
129129

130+
/** Get the event context. */
131+
public getContext(): InternalEventContext {
132+
return this._context;
133+
}
134+
135+
/** If recording is currently enabled. */
136+
public isEnabled(): boolean {
137+
return this._isEnabled;
138+
}
139+
130140
/**
131141
* Initializes the plugin.
132142
*
@@ -193,6 +203,19 @@ export class ReplayContainer {
193203
}
194204
}
195205

206+
/**
207+
* Stops the recording, if it was running.
208+
* Returns true if it was stopped, else false.
209+
*/
210+
public stopRecording(): boolean {
211+
if (this._stopRecording) {
212+
this._stopRecording();
213+
return true;
214+
}
215+
216+
return false;
217+
}
218+
196219
/**
197220
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
198221
* does not support a teardown

packages/replay/test/unit/index-handleGlobalEvent.test.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ it('only tags errors with replay id, adds trace and error id to context for erro
7777
}),
7878
);
7979

80-
// @ts-ignore private
81-
expect(replay._context.traceIds).toContain('trace_id');
82-
// @ts-ignore private
83-
expect(replay._context.errorIds).toContain('event_id');
80+
expect(replay.getContext().traceIds).toContain('trace_id');
81+
expect(replay.getContext().errorIds).toContain('event_id');
8482

8583
jest.runAllTimers();
8684
await new Promise(process.nextTick); // wait for flush
@@ -96,7 +94,7 @@ it('strips out dropped events from errorIds', async () => {
9694
const error3 = Error({ event_id: 'err3' });
9795

9896
// @ts-ignore private
99-
overwriteRecordDroppedEvent(replay._context.errorIds);
97+
overwriteRecordDroppedEvent(replay.getContext().errorIds);
10098

10199
const client = getCurrentHub().getClient()!;
102100

@@ -107,7 +105,7 @@ it('strips out dropped events from errorIds', async () => {
107105
client.recordDroppedEvent('before_send', 'error', { event_id: 'err2' });
108106

109107
// @ts-ignore private
110-
expect(Array.from(replay._context.errorIds)).toEqual(['err1', 'err3']);
108+
expect(Array.from(replay.getContext().errorIds)).toEqual(['err1', 'err3']);
111109

112110
restoreRecordDroppedEvent();
113111
});

packages/replay/test/unit/index.test.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,7 @@ describe('Replay', () => {
349349
const initialSession = replay.session;
350350

351351
expect(initialSession?.id).toBeDefined();
352-
// @ts-ignore private member
353-
expect(replay._context).toEqual(
352+
expect(replay.getContext()).toEqual(
354353
expect.objectContaining({
355354
initialUrl: 'http://localhost/',
356355
initialTimestamp: BASE_TIMESTAMP,
@@ -423,8 +422,7 @@ describe('Replay', () => {
423422
});
424423

425424
// `_context` should be reset when a new session is created
426-
// @ts-ignore private member
427-
expect(replay._context).toEqual(
425+
expect(replay.getContext()).toEqual(
428426
expect.objectContaining({
429427
initialUrl: 'http://dummy/',
430428
initialTimestamp: newTimestamp,
@@ -437,8 +435,7 @@ describe('Replay', () => {
437435
const initialSession = replay.session;
438436

439437
expect(initialSession?.id).toBeDefined();
440-
// @ts-ignore private member
441-
expect(replay._context).toEqual(
438+
expect(replay.getContext()).toEqual(
442439
expect.objectContaining({
443440
initialUrl: 'http://localhost/',
444441
initialTimestamp: BASE_TIMESTAMP,
@@ -536,8 +533,7 @@ describe('Replay', () => {
536533
});
537534

538535
// `_context` should be reset when a new session is created
539-
// @ts-ignore private member
540-
expect(replay._context).toEqual(
536+
expect(replay.getContext()).toEqual(
541537
expect.objectContaining({
542538
initialUrl: 'http://dummy/',
543539
initialTimestamp: newTimestamp,
@@ -855,8 +851,7 @@ describe('Replay', () => {
855851
);
856852

857853
// This should be null because `addEvent` has not been called yet
858-
// @ts-ignore private member
859-
expect(replay._context.earliestEvent).toBe(null);
854+
expect(replay.getContext().earliestEvent).toBe(null);
860855
expect(mockTransportSend).toHaveBeenCalledTimes(0);
861856

862857
// A new checkout occurs (i.e. a new session was started)
@@ -896,8 +891,7 @@ describe('Replay', () => {
896891
});
897892

898893
// This gets reset after sending replay
899-
// @ts-ignore private member
900-
expect(replay._context.earliestEvent).toBe(null);
894+
expect(replay.getContext().earliestEvent).toBe(null);
901895
});
902896

903897
it('has single flush when checkout flush and debounce flush happen near simultaneously', async () => {

0 commit comments

Comments
 (0)