Skip to content

Commit f4aef26

Browse files
committed
ref(types): deprecate outcome enum
1 parent 8782ffe commit f4aef26

File tree

11 files changed

+58
-55
lines changed

11 files changed

+58
-55
lines changed

packages/browser/src/transports/fetch.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';
2-
import { Event, Outcome, Response, SentryRequest, Session, TransportOptions } from '@sentry/types';
2+
import { Event, Response, SentryRequest, Session, TransportOptions } from '@sentry/types';
33
import { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';
44

55
import { BaseTransport } from './base';
@@ -37,7 +37,7 @@ export class FetchTransport extends BaseTransport {
3737
*/
3838
private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {
3939
if (this._isRateLimited(sentryRequest.type)) {
40-
this.recordLostEvent(Outcome.RateLimitBackoff, sentryRequest.type);
40+
this.recordLostEvent('ratelimit_backoff', sentryRequest.type);
4141

4242
return Promise.reject({
4343
event: originalPayload,
@@ -89,9 +89,9 @@ export class FetchTransport extends BaseTransport {
8989
.then(undefined, reason => {
9090
// It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.
9191
if (reason instanceof SentryError) {
92-
this.recordLostEvent(Outcome.QueueOverflow, sentryRequest.type);
92+
this.recordLostEvent('queue_overflow', sentryRequest.type);
9393
} else {
94-
this.recordLostEvent(Outcome.NetworkError, sentryRequest.type);
94+
this.recordLostEvent('network_error', sentryRequest.type);
9595
}
9696
throw reason;
9797
});

packages/browser/src/transports/xhr.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';
2-
import { Event, Outcome, Response, SentryRequest, Session } from '@sentry/types';
2+
import { Event, Response, SentryRequest, Session } from '@sentry/types';
33
import { SentryError, SyncPromise } from '@sentry/utils';
44

55
import { BaseTransport } from './base';
@@ -26,7 +26,7 @@ export class XHRTransport extends BaseTransport {
2626
*/
2727
private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {
2828
if (this._isRateLimited(sentryRequest.type)) {
29-
this.recordLostEvent(Outcome.RateLimitBackoff, sentryRequest.type);
29+
this.recordLostEvent('ratelimit_backoff', sentryRequest.type);
3030

3131
return Promise.reject({
3232
event: originalPayload,
@@ -66,9 +66,9 @@ export class XHRTransport extends BaseTransport {
6666
.then(undefined, reason => {
6767
// It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.
6868
if (reason instanceof SentryError) {
69-
this.recordLostEvent(Outcome.QueueOverflow, sentryRequest.type);
69+
this.recordLostEvent('queue_overflow', sentryRequest.type);
7070
} else {
71-
this.recordLostEvent(Outcome.NetworkError, sentryRequest.type);
71+
this.recordLostEvent('network_error', sentryRequest.type);
7272
}
7373
throw reason;
7474
});

packages/browser/test/unit/transports/base.test.ts

+15-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { Outcome } from '@sentry/types';
2-
31
import { BaseTransport } from '../../../src/transports/base';
42

53
const testDsn = 'https://123@sentry.io/42';
@@ -44,12 +42,12 @@ describe('BaseTransport', () => {
4442
it('sends beacon request when there are outcomes captured and visibility changed to `hidden`', () => {
4543
const transport = new SimpleTransport({ dsn: testDsn, sendClientReports: true });
4644

47-
transport.recordLostEvent(Outcome.BeforeSend, 'event');
45+
transport.recordLostEvent('before_send', 'event');
4846

4947
visibilityState = 'hidden';
5048
document.dispatchEvent(new Event('visibilitychange'));
5149

52-
const outcomes = [{ reason: Outcome.BeforeSend, category: 'error', quantity: 1 }];
50+
const outcomes = [{ reason: 'before_send', category: 'error', quantity: 1 }];
5351

5452
expect(sendBeaconSpy).toHaveBeenCalledWith(
5553
envelopeEndpoint,
@@ -59,7 +57,7 @@ describe('BaseTransport', () => {
5957

6058
it('doesnt send beacon request when there are outcomes captured, but visibility state did not change to `hidden`', () => {
6159
const transport = new SimpleTransport({ dsn: testDsn, sendClientReports: true });
62-
transport.recordLostEvent(Outcome.BeforeSend, 'event');
60+
transport.recordLostEvent('before_send', 'event');
6361

6462
visibilityState = 'visible';
6563
document.dispatchEvent(new Event('visibilitychange'));
@@ -70,21 +68,21 @@ describe('BaseTransport', () => {
7068
it('correctly serializes request with different categories/reasons pairs', () => {
7169
const transport = new SimpleTransport({ dsn: testDsn, sendClientReports: true });
7270

73-
transport.recordLostEvent(Outcome.BeforeSend, 'event');
74-
transport.recordLostEvent(Outcome.BeforeSend, 'event');
75-
transport.recordLostEvent(Outcome.SampleRate, 'transaction');
76-
transport.recordLostEvent(Outcome.NetworkError, 'session');
77-
transport.recordLostEvent(Outcome.NetworkError, 'session');
78-
transport.recordLostEvent(Outcome.RateLimitBackoff, 'event');
71+
transport.recordLostEvent('before_send', 'event');
72+
transport.recordLostEvent('before_send', 'event');
73+
transport.recordLostEvent('sample_rate', 'transaction');
74+
transport.recordLostEvent('network_error', 'session');
75+
transport.recordLostEvent('network_error', 'session');
76+
transport.recordLostEvent('ratelimit_backoff', 'event');
7977

8078
visibilityState = 'hidden';
8179
document.dispatchEvent(new Event('visibilitychange'));
8280

8381
const outcomes = [
84-
{ reason: Outcome.BeforeSend, category: 'error', quantity: 2 },
85-
{ reason: Outcome.SampleRate, category: 'transaction', quantity: 1 },
86-
{ reason: Outcome.NetworkError, category: 'session', quantity: 2 },
87-
{ reason: Outcome.RateLimitBackoff, category: 'error', quantity: 1 },
82+
{ reason: 'before_send', category: 'error', quantity: 2 },
83+
{ reason: 'sample_rate', category: 'transaction', quantity: 1 },
84+
{ reason: 'network_error', category: 'session', quantity: 2 },
85+
{ reason: 'ratelimit_backoff', category: 'error', quantity: 1 },
8886
];
8987

9088
expect(sendBeaconSpy).toHaveBeenCalledWith(
@@ -97,12 +95,12 @@ describe('BaseTransport', () => {
9795
const tunnel = 'https://hello.com/world';
9896
const transport = new SimpleTransport({ dsn: testDsn, sendClientReports: true, tunnel });
9997

100-
transport.recordLostEvent(Outcome.BeforeSend, 'event');
98+
transport.recordLostEvent('before_send', 'event');
10199

102100
visibilityState = 'hidden';
103101
document.dispatchEvent(new Event('visibilitychange'));
104102

105-
const outcomes = [{ reason: Outcome.BeforeSend, category: 'error', quantity: 1 }];
103+
const outcomes = [{ reason: 'before_send', category: 'error', quantity: 1 }];
106104

107105
expect(sendBeaconSpy).toHaveBeenCalledWith(
108106
tunnel,

packages/browser/test/unit/transports/fetch.test.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Outcome } from '@sentry/types';
21
import { SentryError } from '@sentry/utils';
32

43
import { Event, Response, Transports } from '../../../src';
@@ -117,7 +116,7 @@ describe('FetchTransport', () => {
117116
try {
118117
await transport.sendEvent(eventPayload);
119118
} catch (_) {
120-
expect(spy).toHaveBeenCalledWith(Outcome.NetworkError, 'event');
119+
expect(spy).toHaveBeenCalledWith('network_error', 'event');
121120
}
122121
});
123122

@@ -129,7 +128,7 @@ describe('FetchTransport', () => {
129128
try {
130129
await transport.sendEvent(transactionPayload);
131130
} catch (_) {
132-
expect(spy).toHaveBeenCalledWith(Outcome.QueueOverflow, 'transaction');
131+
expect(spy).toHaveBeenCalledWith('queue_overflow', 'transaction');
133132
}
134133
});
135134

@@ -490,13 +489,13 @@ describe('FetchTransport', () => {
490489
try {
491490
await transport.sendEvent(eventPayload);
492491
} catch (_) {
493-
expect(spy).toHaveBeenCalledWith(Outcome.RateLimitBackoff, 'event');
492+
expect(spy).toHaveBeenCalledWith('ratelimit_backoff', 'event');
494493
}
495494

496495
try {
497496
await transport.sendEvent(transactionPayload);
498497
} catch (_) {
499-
expect(spy).toHaveBeenCalledWith(Outcome.RateLimitBackoff, 'transaction');
498+
expect(spy).toHaveBeenCalledWith('ratelimit_backoff', 'transaction');
500499
}
501500
});
502501
});

packages/browser/test/unit/transports/xhr.test.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Outcome } from '@sentry/types';
21
import { SentryError } from '@sentry/utils';
32
import { fakeServer, SinonFakeServer } from 'sinon';
43

@@ -79,7 +78,7 @@ describe('XHRTransport', () => {
7978
try {
8079
await transport.sendEvent(eventPayload);
8180
} catch (_) {
82-
expect(spy).toHaveBeenCalledWith(Outcome.NetworkError, 'event');
81+
expect(spy).toHaveBeenCalledWith('network_error', 'event');
8382
}
8483
});
8584

@@ -91,7 +90,7 @@ describe('XHRTransport', () => {
9190
try {
9291
await transport.sendEvent(transactionPayload);
9392
} catch (_) {
94-
expect(spy).toHaveBeenCalledWith(Outcome.QueueOverflow, 'transaction');
93+
expect(spy).toHaveBeenCalledWith('queue_overflow', 'transaction');
9594
}
9695
});
9796

@@ -416,13 +415,13 @@ describe('XHRTransport', () => {
416415
try {
417416
await transport.sendEvent(eventPayload);
418417
} catch (_) {
419-
expect(spy).toHaveBeenCalledWith(Outcome.RateLimitBackoff, 'event');
418+
expect(spy).toHaveBeenCalledWith('ratelimit_backoff', 'event');
420419
}
421420

422421
try {
423422
await transport.sendEvent(transactionPayload);
424423
} catch (_) {
425-
expect(spy).toHaveBeenCalledWith(Outcome.RateLimitBackoff, 'transaction');
424+
expect(spy).toHaveBeenCalledWith('ratelimit_backoff', 'transaction');
426425
}
427426
});
428427
});

packages/core/src/baseclient.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
Integration,
88
IntegrationClass,
99
Options,
10-
Outcome,
1110
SessionStatus,
1211
SeverityLevel,
1312
Transport,
@@ -541,7 +540,7 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
541540
// 0.0 === 0% events are sent
542541
// Sampling for transaction happens somewhere else
543542
if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {
544-
recordLostEvent(Outcome.SampleRate, 'event');
543+
recordLostEvent('sample_rate', 'event');
545544
return SyncPromise.reject(
546545
new SentryError(
547546
`Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,
@@ -552,7 +551,7 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
552551
return this._prepareEvent(event, scope, hint)
553552
.then(prepared => {
554553
if (prepared === null) {
555-
recordLostEvent(Outcome.EventProcessor, event.type || 'event');
554+
recordLostEvent('event_processor', event.type || 'event');
556555
throw new SentryError('An event processor returned null, will not send event.');
557556
}
558557

@@ -566,7 +565,7 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
566565
})
567566
.then(processedEvent => {
568567
if (processedEvent === null) {
569-
recordLostEvent(Outcome.BeforeSend, event.type || 'event');
568+
recordLostEvent('before_send', event.type || 'event');
570569
throw new SentryError('`beforeSend` returned `null`, will not send event.');
571570
}
572571

packages/core/test/lib/base.test.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Hub, Scope, Session } from '@sentry/hub';
2-
import { Event, Outcome, Span, Transport } from '@sentry/types';
2+
import { Event, Span, Transport } from '@sentry/types';
33
import { logger, SentryError, SyncPromise } from '@sentry/utils';
44

55
import * as integrationModule from '../../src/integration';
@@ -882,7 +882,7 @@ describe('BaseClient', () => {
882882

883883
client.captureEvent({ message: 'hello' }, {});
884884

885-
expect(recordLostEventSpy).toHaveBeenCalledWith(Outcome.BeforeSend, 'event');
885+
expect(recordLostEventSpy).toHaveBeenCalledWith('before_send', 'event');
886886
});
887887

888888
test('eventProcessor can drop the even when it returns null', () => {
@@ -914,7 +914,7 @@ describe('BaseClient', () => {
914914
scope.addEventProcessor(() => null);
915915
client.captureEvent({ message: 'hello' }, {}, scope);
916916

917-
expect(recordLostEventSpy).toHaveBeenCalledWith(Outcome.EventProcessor, 'event');
917+
expect(recordLostEventSpy).toHaveBeenCalledWith('event_processor', 'event');
918918
});
919919

920920
test('eventProcessor sends an event and logs when it crashes', () => {
@@ -958,7 +958,7 @@ describe('BaseClient', () => {
958958
);
959959

960960
client.captureEvent({ message: 'hello' }, {});
961-
expect(recordLostEventSpy).toHaveBeenCalledWith(Outcome.SampleRate, 'event');
961+
expect(recordLostEventSpy).toHaveBeenCalledWith('sample_rate', 'event');
962962
});
963963
});
964964

packages/tracing/src/transaction.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { getCurrentHub, Hub } from '@sentry/hub';
22
import {
33
Event,
44
Measurements,
5-
Outcome,
65
Transaction as TransactionInterface,
76
TransactionContext,
87
TransactionMetadata,
@@ -107,7 +106,7 @@ export class Transaction extends SpanClass implements TransactionInterface {
107106
const client = this._hub.getClient();
108107
const transport = client && client.getTransport && client.getTransport();
109108
if (transport && transport.recordLostEvent) {
110-
transport.recordLostEvent(Outcome.SampleRate, 'transaction');
109+
transport.recordLostEvent('sample_rate', 'transaction');
111110
}
112111
return undefined;
113112
}

packages/tracing/test/idletransaction.test.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { BrowserClient, Transports } from '@sentry/browser';
22
import { Hub } from '@sentry/hub';
3-
import { Outcome } from '@sentry/types';
43

54
import {
65
DEFAULT_IDLE_TIMEOUT,
@@ -174,7 +173,7 @@ describe('IdleTransaction', () => {
174173
transaction.initSpanRecorder(10);
175174
transaction.finish(transaction.startTimestamp + 10);
176175

177-
expect(spy).toHaveBeenCalledWith(Outcome.SampleRate, 'transaction');
176+
expect(spy).toHaveBeenCalledWith('sample_rate', 'transaction');
178177
});
179178

180179
describe('_initTimeout', () => {

packages/types/src/transport.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@ import { Response } from './response';
55
import { SdkMetadata } from './sdkmetadata';
66
import { Session, SessionAggregates } from './session';
77

8-
export enum Outcome {
9-
BeforeSend = 'before_send',
10-
EventProcessor = 'event_processor',
11-
NetworkError = 'network_error',
12-
QueueOverflow = 'queue_overflow',
13-
RateLimitBackoff = 'ratelimit_backoff',
14-
SampleRate = 'sample_rate',
15-
}
8+
export type Outcome =
9+
| 'before_send'
10+
| 'event_processor'
11+
| 'network_error'
12+
| 'queue_overflow'
13+
| 'ratelimit_backoff'
14+
| 'sample_rate';
1615

1716
/** Transport used sending data to Sentry */
1817
export interface Transport {
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/** JSDoc
2+
* @deprecated Use string literals - if you require type casting, cast to Outcome type
3+
*/
4+
export enum Outcome {
5+
BeforeSend = 'before_send',
6+
EventProcessor = 'event_processor',
7+
NetworkError = 'network_error',
8+
QueueOverflow = 'queue_overflow',
9+
RateLimitBackoff = 'ratelimit_backoff',
10+
SampleRate = 'sample_rate',
11+
}

0 commit comments

Comments
 (0)