diff --git a/packages/astro/src/server/middleware.ts b/packages/astro/src/server/middleware.ts index 4b2f15eb3be4..86334feba731 100644 --- a/packages/astro/src/server/middleware.ts +++ b/packages/astro/src/server/middleware.ts @@ -188,7 +188,7 @@ function addMetaTagToHead(htmlChunk: string, scope: Scope, client: Client, span? if (typeof htmlChunk !== 'string') { return htmlChunk; } - const metaTags = getTraceMetaTags(span, scope, client); + const metaTags = getTraceMetaTags({ span, scope, client }); if (!metaTags) { return htmlChunk; diff --git a/packages/core/src/utils/meta.ts b/packages/core/src/utils/meta.ts index 339dfcee2f28..fde740877a99 100644 --- a/packages/core/src/utils/meta.ts +++ b/packages/core/src/utils/meta.ts @@ -1,8 +1,11 @@ import type { Client, Scope, Span } from '@sentry/types'; import { getTraceData } from './traceData'; +// Function overloads +export function getTraceMetaTags(params?: { span?: Span; scope?: Scope; client?: Client; asArray: true }): string[]; +export function getTraceMetaTags(params?: { span?: Span; scope?: Scope; client?: Client; asArray?: false }): string; /** - * Returns a string of meta tags that represent the current trace data. + * Returns a string or string[] of meta tags that represent the current trace data. * * You can use this to propagate a trace from your server-side rendered Html to the browser. * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the @@ -22,8 +25,15 @@ import { getTraceData } from './traceData'; * ``` * */ -export function getTraceMetaTags(span?: Span, scope?: Scope, client?: Client): string { - return Object.entries(getTraceData(span, scope, client)) - .map(([key, value]) => ``) - .join('\n'); +export function getTraceMetaTags({ + span, + scope, + client, + asArray, +}: { span?: Span; scope?: Scope; client?: Client; asArray?: boolean } = {}): string | string[] { + const traceTags = Object.entries(getTraceData(span, scope, client)).map( + ([key, value]) => ``, + ); + + return asArray ? traceTags : traceTags.join('\n'); } diff --git a/packages/core/test/lib/utils/meta.test.ts b/packages/core/test/lib/utils/meta.test.ts index 3d78247b8951..415373d5cd2d 100644 --- a/packages/core/test/lib/utils/meta.test.ts +++ b/packages/core/test/lib/utils/meta.test.ts @@ -12,6 +12,20 @@ describe('getTraceMetaTags', () => { `); }); + it('returns baggage and sentry-trace values to stringified Html meta tag array', () => { + jest.spyOn(TraceDataModule, 'getTraceData').mockReturnValueOnce({ + 'sentry-trace': '12345678901234567890123456789012-1234567890123456-1', + baggage: 'sentry-environment=production', + }); + + const metaTags = getTraceMetaTags({ asArray: true }); + + expect(metaTags).toContain(''); + expect(metaTags).toContain( + '', + ); + }); + it('renders just sentry-trace values to stringified Html meta tags', () => { jest.spyOn(TraceDataModule, 'getTraceData').mockReturnValueOnce({ 'sentry-trace': '12345678901234567890123456789012-1234567890123456-1',