From d989a51dc87eca59af8dc8a542f1cc85501c3d5a Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 18 Jan 2024 11:58:18 +0100 Subject: [PATCH] feat(types): Add `SerializedEvent` interface (pre v8) --- .../tracing/browsertracing/http-timings/test.ts | 4 ++-- packages/types/src/envelope.ts | 1 + packages/types/src/event.ts | 13 ++++++++++++- packages/types/src/index.ts | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dev-packages/browser-integration-tests/suites/tracing/browsertracing/http-timings/test.ts b/dev-packages/browser-integration-tests/suites/tracing/browsertracing/http-timings/test.ts index a8e7f9eec335..467507fa6f75 100644 --- a/dev-packages/browser-integration-tests/suites/tracing/browsertracing/http-timings/test.ts +++ b/dev-packages/browser-integration-tests/suites/tracing/browsertracing/http-timings/test.ts @@ -1,5 +1,5 @@ import { expect } from '@playwright/test'; -import type { Event } from '@sentry/types'; +import type { SerializedEvent } from '@sentry/types'; import { sentryTest } from '../../../../utils/fixtures'; import { getMultipleSentryEnvelopeRequests, shouldSkipTracingTest } from '../../../../utils/helpers'; @@ -23,7 +23,7 @@ sentryTest('should create fetch spans with http timing @firefox', async ({ brows const url = await getLocalTestPath({ testDir: __dirname }); - const envelopes = await getMultipleSentryEnvelopeRequests(page, 2, { url, timeout: 10000 }); + const envelopes = await getMultipleSentryEnvelopeRequests(page, 2, { url, timeout: 10000 }); const tracingEvent = envelopes[envelopes.length - 1]; // last envelope contains tracing data on all browsers const requestSpans = tracingEvent.spans?.filter(({ op }) => op === 'http.client'); diff --git a/packages/types/src/envelope.ts b/packages/types/src/envelope.ts index a33f823ab8f5..98bb9145a547 100644 --- a/packages/types/src/envelope.ts +++ b/packages/types/src/envelope.ts @@ -83,6 +83,7 @@ type CheckInItemHeaders = { type: 'check_in' }; type StatsdItemHeaders = { type: 'statsd'; length: number }; type ProfileItemHeaders = { type: 'profile' }; +// TODO (v8): Replace `Event` with `SerializedEvent` export type EventItem = BaseEnvelopeItem; export type AttachmentItem = BaseEnvelopeItem; export type UserFeedbackItem = BaseEnvelopeItem; diff --git a/packages/types/src/event.ts b/packages/types/src/event.ts index b9e908371f1e..50322f18fbc6 100644 --- a/packages/types/src/event.ts +++ b/packages/types/src/event.ts @@ -11,7 +11,7 @@ import type { Request } from './request'; import type { CaptureContext } from './scope'; import type { SdkInfo } from './sdkinfo'; import type { Severity, SeverityLevel } from './severity'; -import type { Span } from './span'; +import type { Span, SpanJSON } from './span'; import type { Thread } from './thread'; import type { TransactionSource } from './transaction'; import type { User } from './user'; @@ -86,3 +86,14 @@ export interface EventHint { data?: any; integrations?: string[]; } + +/** + * Represents the event that's sent in an event envelope, omitting interfaces that are no longer representative after + * event serialization. + */ +export interface SerializedEvent extends Omit { + /** + * POJO objects of spans belonging to this event. + */ + spans?: SpanJSON[]; +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 34f668275c94..7f9d66c904fa 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -47,7 +47,7 @@ export type { ProfileItem, } from './envelope'; export type { ExtendedError } from './error'; -export type { Event, EventHint, EventType, ErrorEvent, TransactionEvent } from './event'; +export type { Event, EventHint, EventType, ErrorEvent, TransactionEvent, SerializedEvent } from './event'; export type { EventProcessor } from './eventprocessor'; export type { Exception } from './exception'; export type { Extra, Extras } from './extra';