diff --git a/packages/browser/test/unit/index.test.ts b/packages/browser/test/unit/index.test.ts index e97046c3eb65..2aae1410d438 100644 --- a/packages/browser/test/unit/index.test.ts +++ b/packages/browser/test/unit/index.test.ts @@ -7,7 +7,6 @@ import { } from '@sentry/core'; import * as utils from '@sentry/utils'; -import type { Event } from '../../src'; import { setCurrentClient } from '../../src'; import { BrowserClient, @@ -213,7 +212,7 @@ describe('SentryBrowser', () => { it('should capture a message', done => { const options = getDefaultBrowserClientOptions({ - beforeSend: (event: Event): Event | null => { + beforeSend: event => { expect(event.message).toBe('test'); expect(event.exception).toBeUndefined(); done(); @@ -227,7 +226,7 @@ describe('SentryBrowser', () => { it('should capture an event', done => { const options = getDefaultBrowserClientOptions({ - beforeSend: (event: Event): Event | null => { + beforeSend: event => { expect(event.message).toBe('event'); expect(event.exception).toBeUndefined(); done(); @@ -241,7 +240,7 @@ describe('SentryBrowser', () => { it('should set `platform` on events', done => { const options = getDefaultBrowserClientOptions({ - beforeSend: (event: Event): Event | null => { + beforeSend: event => { expect(event.platform).toBe('javascript'); done(); return event; diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index 0f789e2da169..373c2d6424cc 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -1,4 +1,4 @@ -import type { Client, Envelope, Event } from '@sentry/types'; +import type { Client, Envelope, ErrorEvent, Event, TransactionEvent } from '@sentry/types'; import { SentryError, SyncPromise, dsnToString, logger } from '@sentry/utils'; import { Scope, addBreadcrumb, getCurrentScope, getIsolationScope, makeSession, setCurrentClient } from '../../src'; @@ -1065,7 +1065,7 @@ describe('BaseClient', () => { const beforeSend = jest.fn( async event => - new Promise(resolve => { + new Promise(resolve => { setTimeout(() => { resolve(event); }, 1); @@ -1095,7 +1095,7 @@ describe('BaseClient', () => { const beforeSendTransaction = jest.fn( async event => - new Promise(resolve => { + new Promise(resolve => { setTimeout(() => { resolve(event); }, 1); @@ -1125,7 +1125,7 @@ describe('BaseClient', () => { const beforeSend = jest.fn(async event => { event.message = 'changed2'; - return new Promise(resolve => { + return new Promise(resolve => { setTimeout(() => { resolve(event); }, 1); @@ -1155,7 +1155,7 @@ describe('BaseClient', () => { const beforeSendTransaction = jest.fn(async event => { event.transaction = '/adopt/dont/shop'; - return new Promise(resolve => { + return new Promise(resolve => { setTimeout(() => { resolve(event); }, 1); diff --git a/packages/types/src/options.ts b/packages/types/src/options.ts index 3f8c55e84949..c9c95140902d 100644 --- a/packages/types/src/options.ts +++ b/packages/types/src/options.ts @@ -1,5 +1,5 @@ import type { Breadcrumb, BreadcrumbHint } from './breadcrumb'; -import type { ErrorEvent, Event, EventHint, TransactionEvent } from './event'; +import type { ErrorEvent, EventHint, TransactionEvent } from './event'; import type { Integration } from './integration'; import type { CaptureContext } from './scope'; import type { SdkMetadata } from './sdkmetadata'; @@ -255,7 +255,6 @@ export interface ClientOptions number | boolean; - // TODO (v8): Narrow the response type to `ErrorEvent` - this is technically a breaking change. /** * An event-processing callback for error and message events, guaranteed to be invoked after all other event * processors, which allows an event to be modified or dropped. @@ -267,9 +266,8 @@ export interface ClientOptions PromiseLike | Event | null; + beforeSend?: (event: ErrorEvent, hint: EventHint) => PromiseLike | ErrorEvent | null; - // TODO (v8): Narrow the response type to `TransactionEvent` - this is technically a breaking change. /** * An event-processing callback for transaction events, guaranteed to be invoked after all other event * processors. This allows an event to be modified or dropped before it's sent. @@ -281,7 +279,10 @@ export interface ClientOptions PromiseLike | Event | null; + beforeSendTransaction?: ( + event: TransactionEvent, + hint: EventHint, + ) => PromiseLike | TransactionEvent | null; /** * A callback invoked when adding a breadcrumb, allowing to optionally modify