From 9da8e7f6aae49866182f2bb94e64f1f06f01853d Mon Sep 17 00:00:00 2001 From: Francesco Gringl-Novy Date: Mon, 17 Mar 2025 14:39:44 +0100 Subject: [PATCH 01/13] test(opentelemetry): Remove deprecated `new Span()` usage in tests (#15702) Fixes part of https://github.com/getsentry/sentry-javascript/pull/15518 We have been using the deprecated `new Span()` syntax for tests in OTEL. This PR changes this to instead use a proper tracer, which is also supported in v2 of otel. --- .../node/src/integrations/tracing/graphql.ts | 3 - .../opentelemetry/test/helpers/createSpan.ts | 40 --------- .../test/utils/getRequestSpanData.test.ts | 33 ++++++-- .../test/utils/groupSpansWithParents.test.ts | 81 +++++++++++++++---- .../test/utils/mapStatus.test.ts | 66 +++++++++------ .../test/utils/spanToJSON.test.ts | 57 ++++++++----- 6 files changed, 170 insertions(+), 110 deletions(-) delete mode 100644 packages/opentelemetry/test/helpers/createSpan.ts diff --git a/packages/node/src/integrations/tracing/graphql.ts b/packages/node/src/integrations/tracing/graphql.ts index fbaf239ae6d1..945327064df2 100644 --- a/packages/node/src/integrations/tracing/graphql.ts +++ b/packages/node/src/integrations/tracing/graphql.ts @@ -55,9 +55,6 @@ export const instrumentGraphql = generateInstrumentOnce( if (options.useOperationNameForRootSpan && operationType) { const rootSpan = getRootSpan(span); - - // We guard to only do this on http.server spans - const rootSpanAttributes = spanToJSON(rootSpan).data; const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || []; diff --git a/packages/opentelemetry/test/helpers/createSpan.ts b/packages/opentelemetry/test/helpers/createSpan.ts deleted file mode 100644 index 0e3672f5abe3..000000000000 --- a/packages/opentelemetry/test/helpers/createSpan.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { Context, SpanContext, TimeInput } from '@opentelemetry/api'; -import { SpanKind } from '@opentelemetry/api'; -import type { Tracer } from '@opentelemetry/sdk-trace-base'; -import { Span } from '@opentelemetry/sdk-trace-base'; -import { uuid4 } from '@sentry/core'; - -export function createSpan( - name?: string, - { - spanId, - parentSpanId, - traceId, - startTime, - }: { - spanId?: string; - parentSpanId?: string; - traceId?: string; - startTime?: TimeInput; - } = {}, -): Span { - const spanProcessor = { - onStart: () => {}, - onEnd: () => {}, - }; - const tracer = { - resource: 'test-resource', - instrumentationLibrary: 'test-instrumentation-library', - getSpanLimits: () => ({}), - getActiveSpanProcessor: () => spanProcessor, - } as unknown as Tracer; - - const spanContext: SpanContext = { - spanId: spanId || uuid4(), - traceId: traceId || uuid4(), - traceFlags: 0, - }; - - // eslint-disable-next-line deprecation/deprecation - return new Span(tracer, {} as Context, name || 'test', spanContext, SpanKind.INTERNAL, parentSpanId, [], startTime); -} diff --git a/packages/opentelemetry/test/utils/getRequestSpanData.test.ts b/packages/opentelemetry/test/utils/getRequestSpanData.test.ts index 72b64a307c99..b2fba5b2f2f7 100644 --- a/packages/opentelemetry/test/utils/getRequestSpanData.test.ts +++ b/packages/opentelemetry/test/utils/getRequestSpanData.test.ts @@ -1,20 +1,39 @@ /* eslint-disable deprecation/deprecation */ +import type { Span } from '@opentelemetry/api'; +import { trace } from '@opentelemetry/api'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { SEMATTRS_HTTP_METHOD, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions'; -import { describe, expect, it } from 'vitest'; - +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { getRequestSpanData } from '../../src/utils/getRequestSpanData'; -import { createSpan } from '../helpers/createSpan'; +import { TestClient, getDefaultTestClientOptions } from '../helpers/TestClient'; +import { setupOtel } from '../helpers/initOtel'; +import { cleanupOtel } from '../helpers/mockSdkInit'; describe('getRequestSpanData', () => { + let provider: BasicTracerProvider | undefined; + + beforeEach(() => { + const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); + provider = setupOtel(client); + }); + + afterEach(() => { + cleanupOtel(provider); + }); + + function createSpan(name: string): Span { + return trace.getTracer('test').startSpan(name); + } + it('works with basic span', () => { - const span = createSpan(); + const span = createSpan('test-span'); const data = getRequestSpanData(span); expect(data).toEqual({}); }); it('works with http span', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setAttributes({ [SEMATTRS_HTTP_URL]: 'http://example.com?foo=bar#baz', [SEMATTRS_HTTP_METHOD]: 'GET', @@ -31,7 +50,7 @@ describe('getRequestSpanData', () => { }); it('works without method', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setAttributes({ [SEMATTRS_HTTP_URL]: 'http://example.com', }); @@ -45,7 +64,7 @@ describe('getRequestSpanData', () => { }); it('works with incorrect URL', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setAttributes({ [SEMATTRS_HTTP_URL]: 'malformed-url-here', [SEMATTRS_HTTP_METHOD]: 'GET', diff --git a/packages/opentelemetry/test/utils/groupSpansWithParents.test.ts b/packages/opentelemetry/test/utils/groupSpansWithParents.test.ts index f1bea09bd2f5..c137748353bf 100644 --- a/packages/opentelemetry/test/utils/groupSpansWithParents.test.ts +++ b/packages/opentelemetry/test/utils/groupSpansWithParents.test.ts @@ -1,19 +1,45 @@ -import { describe, expect, it } from 'vitest'; - +import { trace } from '@opentelemetry/api'; +import type { BasicTracerProvider, ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import type { Span } from '@sentry/core'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { withActiveSpan } from '../../src/trace'; import { groupSpansWithParents } from '../../src/utils/groupSpansWithParents'; -import { createSpan } from '../helpers/createSpan'; +import { TestClient, getDefaultTestClientOptions } from '../helpers/TestClient'; +import { setupOtel } from '../helpers/initOtel'; +import { cleanupOtel } from '../helpers/mockSdkInit'; describe('groupSpansWithParents', () => { + let provider: BasicTracerProvider | undefined; + + beforeEach(() => { + const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); + provider = setupOtel(client); + }); + + afterEach(() => { + cleanupOtel(provider); + }); + it('works with no spans', () => { const actual = groupSpansWithParents([]); expect(actual).toEqual([]); }); it('works with a single root span & in-order spans', () => { - const rootSpan = createSpan('root', { spanId: 'rootId' }); - const parentSpan1 = createSpan('parent1', { spanId: 'parent1Id', parentSpanId: 'rootId' }); - const parentSpan2 = createSpan('parent2', { spanId: 'parent2Id', parentSpanId: 'rootId' }); - const child1 = createSpan('child1', { spanId: 'child1', parentSpanId: 'parent1Id' }); + const tracer = trace.getTracer('test'); + const rootSpan = tracer.startSpan('root') as unknown as ReadableSpan; + const parentSpan1 = withActiveSpan( + rootSpan as unknown as Span, + () => tracer.startSpan('parent1') as unknown as ReadableSpan, + ); + const parentSpan2 = withActiveSpan( + rootSpan as unknown as Span, + () => tracer.startSpan('parent2') as unknown as ReadableSpan, + ); + const child1 = withActiveSpan( + parentSpan1 as unknown as Span, + () => tracer.startSpan('child1') as unknown as ReadableSpan, + ); const actual = groupSpansWithParents([rootSpan, parentSpan1, parentSpan2, child1]); expect(actual).toHaveLength(4); @@ -46,15 +72,28 @@ describe('groupSpansWithParents', () => { }); it('works with a spans with missing root span', () => { - const parentSpan1 = createSpan('parent1', { spanId: 'parent1Id', parentSpanId: 'rootId' }); - const parentSpan2 = createSpan('parent2', { spanId: 'parent2Id', parentSpanId: 'rootId' }); - const child1 = createSpan('child1', { spanId: 'child1', parentSpanId: 'parent1Id' }); + const tracer = trace.getTracer('test'); + + // We create this root span here, but we do not pass it to `groupSpansWithParents` below + const rootSpan = tracer.startSpan('root') as unknown as ReadableSpan; + const parentSpan1 = withActiveSpan( + rootSpan as unknown as Span, + () => tracer.startSpan('parent1') as unknown as ReadableSpan, + ); + const parentSpan2 = withActiveSpan( + rootSpan as unknown as Span, + () => tracer.startSpan('parent2') as unknown as ReadableSpan, + ); + const child1 = withActiveSpan( + parentSpan1 as unknown as Span, + () => tracer.startSpan('child1') as unknown as ReadableSpan, + ); const actual = groupSpansWithParents([parentSpan1, parentSpan2, child1]); expect(actual).toHaveLength(4); // Ensure parent & span is correctly set - const rootRef = actual.find(ref => ref.id === 'rootId'); + const rootRef = actual.find(ref => ref.id === rootSpan.spanContext().spanId); const parent1Ref = actual.find(ref => ref.span === parentSpan1); const parent2Ref = actual.find(ref => ref.span === parentSpan2); const child1Ref = actual.find(ref => ref.span === child1); @@ -82,11 +121,21 @@ describe('groupSpansWithParents', () => { }); it('works with multiple root spans & out-of-order spans', () => { - const rootSpan1 = createSpan('root1', { spanId: 'root1Id' }); - const rootSpan2 = createSpan('root2', { spanId: 'root2Id' }); - const parentSpan1 = createSpan('parent1', { spanId: 'parent1Id', parentSpanId: 'root1Id' }); - const parentSpan2 = createSpan('parent2', { spanId: 'parent2Id', parentSpanId: 'root2Id' }); - const childSpan1 = createSpan('child1', { spanId: 'child1Id', parentSpanId: 'parent1Id' }); + const tracer = trace.getTracer('test'); + const rootSpan1 = tracer.startSpan('root1') as unknown as ReadableSpan; + const rootSpan2 = tracer.startSpan('root2') as unknown as ReadableSpan; + const parentSpan1 = withActiveSpan( + rootSpan1 as unknown as Span, + () => tracer.startSpan('parent1') as unknown as ReadableSpan, + ); + const parentSpan2 = withActiveSpan( + rootSpan2 as unknown as Span, + () => tracer.startSpan('parent2') as unknown as ReadableSpan, + ); + const childSpan1 = withActiveSpan( + parentSpan1 as unknown as Span, + () => tracer.startSpan('child1') as unknown as ReadableSpan, + ); const actual = groupSpansWithParents([childSpan1, parentSpan1, parentSpan2, rootSpan2, rootSpan1]); expect(actual).toHaveLength(5); diff --git a/packages/opentelemetry/test/utils/mapStatus.test.ts b/packages/opentelemetry/test/utils/mapStatus.test.ts index 83d7548aa3ad..aa72cfb95b53 100644 --- a/packages/opentelemetry/test/utils/mapStatus.test.ts +++ b/packages/opentelemetry/test/utils/mapStatus.test.ts @@ -1,13 +1,32 @@ /* eslint-disable deprecation/deprecation */ +import type { Span } from '@opentelemetry/api'; +import { trace } from '@opentelemetry/api'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_RPC_GRPC_STATUS_CODE } from '@opentelemetry/semantic-conventions'; -import { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from '@sentry/core'; import type { SpanStatus } from '@sentry/core'; -import { describe, expect, it } from 'vitest'; - +import { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from '@sentry/core'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { mapStatus } from '../../src/utils/mapStatus'; -import { createSpan } from '../helpers/createSpan'; +import { TestClient, getDefaultTestClientOptions } from '../helpers/TestClient'; +import { setupOtel } from '../helpers/initOtel'; +import { cleanupOtel } from '../helpers/mockSdkInit'; describe('mapStatus', () => { + let provider: BasicTracerProvider | undefined; + + beforeEach(() => { + const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); + provider = setupOtel(client); + }); + + afterEach(() => { + cleanupOtel(provider); + }); + + function createSpan(name: string): Span { + return trace.getTracer('test').startSpan(name); + } + const statusTestTable: [undefined | number | string, undefined | string, SpanStatus][] = [ // http codes [400, undefined, { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }], @@ -23,19 +42,6 @@ describe('mapStatus', () => { [504, undefined, { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' }], [999, undefined, { code: SPAN_STATUS_ERROR, message: 'unknown_error' }], - ['400', undefined, { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }], - ['401', undefined, { code: SPAN_STATUS_ERROR, message: 'unauthenticated' }], - ['403', undefined, { code: SPAN_STATUS_ERROR, message: 'permission_denied' }], - ['404', undefined, { code: SPAN_STATUS_ERROR, message: 'not_found' }], - ['409', undefined, { code: SPAN_STATUS_ERROR, message: 'already_exists' }], - ['429', undefined, { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' }], - ['499', undefined, { code: SPAN_STATUS_ERROR, message: 'cancelled' }], - ['500', undefined, { code: SPAN_STATUS_ERROR, message: 'internal_error' }], - ['501', undefined, { code: SPAN_STATUS_ERROR, message: 'unimplemented' }], - ['503', undefined, { code: SPAN_STATUS_ERROR, message: 'unavailable' }], - ['504', undefined, { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' }], - ['999', undefined, { code: SPAN_STATUS_ERROR, message: 'unknown_error' }], - // grpc codes [undefined, '1', { code: SPAN_STATUS_ERROR, message: 'cancelled' }], [undefined, '2', { code: SPAN_STATUS_ERROR, message: 'unknown_error' }], @@ -56,11 +62,11 @@ describe('mapStatus', () => { [undefined, '999', { code: SPAN_STATUS_ERROR, message: 'unknown_error' }], // http takes precedence over grpc - ['400', '2', { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }], + [400, '2', { code: SPAN_STATUS_ERROR, message: 'invalid_argument' }], ]; it.each(statusTestTable)('works with httpCode=%s, grpcCode=%s', (httpCode, grpcCode, expected) => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: 0 }); // UNSET if (httpCode) { @@ -75,39 +81,49 @@ describe('mapStatus', () => { expect(actual).toEqual(expected); }); + it('works with string SEMATTRS_HTTP_STATUS_CODE xxx', () => { + const span = createSpan('test-span'); + + span.setStatus({ code: 0 }); // UNSET + span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, '400'); + + const actual = mapStatus(span); + expect(actual).toEqual({ code: SPAN_STATUS_ERROR, message: 'invalid_argument' }); + }); + it('returns ok span status when is UNSET present on span', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: 0 }); // UNSET expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_OK }); }); it('returns ok span status when already present on span', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: 1 }); // OK expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_OK }); }); it('returns error status when span already has error status', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: 2, message: 'invalid_argument' }); // ERROR expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_ERROR, message: 'invalid_argument' }); }); it('returns error status when span already has error status without message', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: 2 }); // ERROR expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_ERROR, message: 'unknown_error' }); }); it('infers error status form attributes when span already has error status without message', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, 500); span.setStatus({ code: 2 }); // ERROR expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_ERROR, message: 'internal_error' }); }); it('returns unknown error status when code is unknown', () => { - const span = createSpan(); + const span = createSpan('test-span'); span.setStatus({ code: -1 as 0 }); expect(mapStatus(span)).toEqual({ code: SPAN_STATUS_ERROR, message: 'unknown_error' }); }); diff --git a/packages/opentelemetry/test/utils/spanToJSON.test.ts b/packages/opentelemetry/test/utils/spanToJSON.test.ts index a56d1ec6d240..88da6550d1e0 100644 --- a/packages/opentelemetry/test/utils/spanToJSON.test.ts +++ b/packages/opentelemetry/test/utils/spanToJSON.test.ts @@ -1,32 +1,50 @@ -import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core'; -import { describe, expect, it } from 'vitest'; - -import { createSpan } from '../helpers/createSpan'; +import type { Span, SpanOptions } from '@opentelemetry/api'; +import { trace } from '@opentelemetry/api'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, + spanToJSON, +} from '@sentry/core'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { TestClient, getDefaultTestClientOptions } from '../helpers/TestClient'; +import { setupOtel } from '../helpers/initOtel'; +import { cleanupOtel } from '../helpers/mockSdkInit'; describe('spanToJSON', () => { describe('OpenTelemetry Span', () => { + let provider: BasicTracerProvider | undefined; + + beforeEach(() => { + const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); + provider = setupOtel(client); + }); + + afterEach(() => { + cleanupOtel(provider); + }); + + function createSpan(name: string, params?: SpanOptions): Span { + return trace.getTracer('test').startSpan(name, params); + } + it('works with a simple span', () => { - const span = createSpan('test span', { - spanId: 'SPAN-1', - traceId: 'TRACE-1', - startTime: [123, 0], - }); + const span = createSpan('test span', { startTime: [123, 0] }); expect(spanToJSON(span)).toEqual({ - span_id: 'SPAN-1', - trace_id: 'TRACE-1', + span_id: span.spanContext().spanId, + trace_id: span.spanContext().traceId, start_timestamp: 123, description: 'test span', - data: {}, + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + }, }); }); it('works with a full span', () => { - const span = createSpan('test span', { - spanId: 'SPAN-1', - traceId: 'TRACE-1', - startTime: [123, 0], - }); + const span = createSpan('test span', { startTime: [123, 0] }); span.setAttributes({ attr1: 'value1', @@ -39,8 +57,8 @@ describe('spanToJSON', () => { span.end([456, 0]); expect(spanToJSON(span)).toEqual({ - span_id: 'SPAN-1', - trace_id: 'TRACE-1', + span_id: span.spanContext().spanId, + trace_id: span.spanContext().traceId, start_timestamp: 123, timestamp: 456, description: 'test span', @@ -51,6 +69,7 @@ describe('spanToJSON', () => { attr2: 2, [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'test op', [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, }, status: 'unknown_error', }); From 0b374277ac72dfad913bb037b4832f3914452cec Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 17 Mar 2025 10:52:09 -0400 Subject: [PATCH 02/13] ref(core): Update log types to explicitly reference otel (#15704) In https://github.com/getsentry/sentry-javascript/pull/15530 I added types for the log envelope and log item. This PR comes and explicitly references that these added types were otel logs. For more details, see the logs spec in develop: https://github.com/getsentry/sentry-docs/pull/12920. Note I used `Otel` everywhere here, but I'm also fine with switching to `OpenTelemetry`. --- packages/core/src/types-hoist/envelope.ts | 12 ++++++------ packages/core/src/types-hoist/index.ts | 2 +- packages/core/src/types-hoist/log.ts | 6 ++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/core/src/types-hoist/envelope.ts b/packages/core/src/types-hoist/envelope.ts index d78cccc8384a..b77f22493c92 100644 --- a/packages/core/src/types-hoist/envelope.ts +++ b/packages/core/src/types-hoist/envelope.ts @@ -5,7 +5,7 @@ import type { LegacyCSPReport } from './csp'; import type { DsnComponents } from './dsn'; import type { Event } from './event'; import type { FeedbackEvent, UserFeedback } from './feedback'; -import type { Log } from './log'; +import type { SerializedOtelLog } from './log'; import type { Profile, ProfileChunk } from './profiling'; import type { ReplayEvent, ReplayRecordingData } from './replay'; import type { SdkInfo } from './sdkinfo'; @@ -87,7 +87,7 @@ type CheckInItemHeaders = { type: 'check_in' }; type ProfileItemHeaders = { type: 'profile' }; type ProfileChunkItemHeaders = { type: 'profile_chunk' }; type SpanItemHeaders = { type: 'span' }; -type LogItemHeaders = { type: 'otel_log' }; +type OtelLogItemHeaders = { type: 'otel_log' }; type RawSecurityHeaders = { type: 'raw_security'; sentry_release?: string; sentry_environment?: string }; export type EventItem = BaseEnvelopeItem; @@ -104,7 +104,7 @@ export type FeedbackItem = BaseEnvelopeItem; export type ProfileItem = BaseEnvelopeItem; export type ProfileChunkItem = BaseEnvelopeItem; export type SpanItem = BaseEnvelopeItem>; -export type LogItem = BaseEnvelopeItem; +export type OtelLogItem = BaseEnvelopeItem; export type RawSecurityItem = BaseEnvelopeItem; export type EventEnvelopeHeaders = { event_id: string; sent_at: string; trace?: Partial }; @@ -113,7 +113,7 @@ type CheckInEnvelopeHeaders = { trace?: DynamicSamplingContext }; type ClientReportEnvelopeHeaders = BaseEnvelopeHeaders; type ReplayEnvelopeHeaders = BaseEnvelopeHeaders; type SpanEnvelopeHeaders = BaseEnvelopeHeaders & { trace?: DynamicSamplingContext }; -type LogEnvelopeHeaders = BaseEnvelopeHeaders & { trace?: DynamicSamplingContext }; +type OtelLogEnvelopeHeaders = BaseEnvelopeHeaders & { trace?: DynamicSamplingContext }; export type EventEnvelope = BaseEnvelope< EventEnvelopeHeaders, @@ -126,7 +126,7 @@ export type CheckInEnvelope = BaseEnvelope; export type SpanEnvelope = BaseEnvelope; export type ProfileChunkEnvelope = BaseEnvelope; export type RawSecurityEnvelope = BaseEnvelope; -export type LogEnvelope = BaseEnvelope; +export type OtelLogEnvelope = BaseEnvelope; export type Envelope = | EventEnvelope @@ -137,6 +137,6 @@ export type Envelope = | CheckInEnvelope | SpanEnvelope | RawSecurityEnvelope - | LogEnvelope; + | OtelLogEnvelope; export type EnvelopeItem = Envelope[1][number]; diff --git a/packages/core/src/types-hoist/index.ts b/packages/core/src/types-hoist/index.ts index 95bc5fc55bd4..742b7ffe2346 100644 --- a/packages/core/src/types-hoist/index.ts +++ b/packages/core/src/types-hoist/index.ts @@ -110,7 +110,7 @@ export type { TraceFlag, } from './span'; export type { SpanStatus } from './spanStatus'; -export type { Log, LogAttribute, LogSeverityLevel, LogAttributeValueType } from './log'; +export type { SerializedOtelLog, LogAttribute, LogSeverityLevel, LogAttributeValueType } from './log'; export type { TimedEvent } from './timedEvent'; export type { StackFrame } from './stackframe'; export type { Stacktrace, StackParser, StackLineParser, StackLineParserFn } from './stacktrace'; diff --git a/packages/core/src/types-hoist/log.ts b/packages/core/src/types-hoist/log.ts index 45df68008315..b1588dc4efc4 100644 --- a/packages/core/src/types-hoist/log.ts +++ b/packages/core/src/types-hoist/log.ts @@ -5,7 +5,9 @@ export type LogAttributeValueType = stringValue: string; } | { - intValue: number; + // integers must be represented as a string + // because JSON cannot differentiate between integers and floats + intValue: string; } | { boolValue: boolean; @@ -19,7 +21,7 @@ export type LogAttribute = { value: LogAttributeValueType; }; -export interface Log { +export interface SerializedOtelLog { /** * The severity level of the log. * From d16b07737758c8ec00599df0c397e9161ee3f92f Mon Sep 17 00:00:00 2001 From: Nathan Sarang-Walters Date: Mon, 17 Mar 2025 11:04:44 -0400 Subject: [PATCH 03/13] chore(deps): Bump rollup to 4.35.0 (#15651) --- .../debug-id-sourcemaps/package.json | 2 +- package.json | 2 +- packages/nextjs/package.json | 2 +- .../config/templates/pageWrapperTemplate.ts | 9 +- yarn.lock | 480 +++++------------- 5 files changed, 127 insertions(+), 368 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/debug-id-sourcemaps/package.json b/dev-packages/e2e-tests/test-applications/debug-id-sourcemaps/package.json index 6451610ffe86..17f7b1b21e0a 100644 --- a/dev-packages/e2e-tests/test-applications/debug-id-sourcemaps/package.json +++ b/dev-packages/e2e-tests/test-applications/debug-id-sourcemaps/package.json @@ -13,7 +13,7 @@ "@sentry/node": "latest || *" }, "devDependencies": { - "rollup": "^4.24.2", + "rollup": "^4.35.0", "vitest": "^0.34.6", "@sentry/rollup-plugin": "2.22.6" }, diff --git a/package.json b/package.json index 443b45361873..0bdc7f7a4459 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "npm-run-all2": "^6.2.0", "prettier": "^3.1.1", "rimraf": "^5.0.10", - "rollup": "^4.24.2", + "rollup": "^4.35.0", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-license": "^3.3.1", "size-limit": "~11.1.6", diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 831a52370b69..da820eb484b4 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -88,7 +88,7 @@ "@sentry/webpack-plugin": "3.2.2", "chalk": "3.0.0", "resolve": "1.22.8", - "rollup": "4.34.9", + "rollup": "4.35.0", "stacktrace-parser": "^0.1.10" }, "devDependencies": { diff --git a/packages/nextjs/src/config/templates/pageWrapperTemplate.ts b/packages/nextjs/src/config/templates/pageWrapperTemplate.ts index 2c3f22a597c7..faedfdd7e8a6 100644 --- a/packages/nextjs/src/config/templates/pageWrapperTemplate.ts +++ b/packages/nextjs/src/config/templates/pageWrapperTemplate.ts @@ -25,12 +25,17 @@ const origGetInitialProps = pageComponent ? pageComponent.getInitialProps : unde const origGetStaticProps = userPageModule ? userPageModule.getStaticProps : undefined; const origGetServerSideProps = userPageModule ? userPageModule.getServerSideProps : undefined; +// Rollup will aggressively tree-shake what it perceives to be unused properties +// on objects. Because the key that's used to index into this object (__ROUTE__) +// is replaced during bundling, Rollup can't see that these properties are in fact +// used. Using `Object.freeze` signals to Rollup that it should not tree-shake +// this object. // eslint-disable-next-line @typescript-eslint/no-explicit-any -const getInitialPropsWrappers: Record = { +const getInitialPropsWrappers: Record = Object.freeze({ '/_app': Sentry.wrapAppGetInitialPropsWithSentry, '/_document': Sentry.wrapDocumentGetInitialPropsWithSentry, '/_error': Sentry.wrapErrorGetInitialPropsWithSentry, -}; +}); const getInitialPropsWrapper = getInitialPropsWrappers['__ROUTE__'] || Sentry.wrapGetInitialPropsWithSentry; diff --git a/yarn.lock b/yarn.lock index 6cabcaaf3e41..36df2e86a6f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6551,290 +6551,100 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-android-arm-eabi@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz#14c737dc19603a096568044eadaa60395eefb809" - integrity sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q== - -"@rollup/rollup-android-arm-eabi@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz#731df27dfdb77189547bcef96ada7bf166bbb2fb" - integrity sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw== - -"@rollup/rollup-android-arm-eabi@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz#661a45a4709c70e59e596ec78daa9cb8b8d27604" - integrity sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA== - -"@rollup/rollup-android-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz#9d81ea54fc5650eb4ebbc0a7d84cee331bfa30ad" - integrity sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w== - -"@rollup/rollup-android-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz#4bea6db78e1f6927405df7fe0faf2f5095e01343" - integrity sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q== - -"@rollup/rollup-android-arm64@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz#128fe8dd510d880cf98b4cb6c7add326815a0c4b" - integrity sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg== - -"@rollup/rollup-darwin-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz#29448cb1370cf678b50743d2e392be18470abc23" - integrity sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q== - -"@rollup/rollup-darwin-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz#a7aab77d44be3c44a20f946e10160f84e5450e7f" - integrity sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q== - -"@rollup/rollup-darwin-arm64@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz#363467bc49fd0b1e17075798ac8e9ad1e1e29535" - integrity sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ== - -"@rollup/rollup-darwin-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz#0ca99741c3ed096700557a43bb03359450c7857d" - integrity sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA== - -"@rollup/rollup-darwin-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz#c572c024b57ee8ddd1b0851703ace9eb6cc0dd82" - integrity sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw== - -"@rollup/rollup-darwin-x64@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz#c2fe3d85fffe47f0ed0f076b3563ada22c8af19c" - integrity sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q== - -"@rollup/rollup-freebsd-arm64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz#233f8e4c2f54ad9b719cd9645887dcbd12b38003" - integrity sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ== - -"@rollup/rollup-freebsd-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz#cf74f8113b5a83098a5c026c165742277cbfb88b" - integrity sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA== - -"@rollup/rollup-freebsd-arm64@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz#d95bd8f6eaaf829781144fc8bd2d5d71d9f6a9f5" - integrity sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw== - -"@rollup/rollup-freebsd-x64@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz#dfba762a023063dc901610722995286df4a48360" - integrity sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw== - -"@rollup/rollup-freebsd-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz#39561f3a2f201a4ad6a01425b1ff5928154ecd7c" - integrity sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q== - -"@rollup/rollup-freebsd-x64@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz#c3576c6011656e4966ded29f051edec636b44564" - integrity sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g== - -"@rollup/rollup-linux-arm-gnueabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz#b9da54171726266c5ef4237f462a85b3c3cf6ac9" - integrity sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg== - -"@rollup/rollup-linux-arm-gnueabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz#980d6061e373bfdaeb67925c46d2f8f9b3de537f" - integrity sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g== - -"@rollup/rollup-linux-arm-gnueabihf@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz#48c87d0dee4f8dc9591a416717f91b4a89d77e3d" - integrity sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg== - -"@rollup/rollup-linux-arm-musleabihf@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz#b9db69b3f85f5529eb992936d8f411ee6d04297b" - integrity sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug== - -"@rollup/rollup-linux-arm-musleabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz#f91a90f30dc00d5a64ac2d9bbedc829cd3cfaa78" - integrity sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA== - -"@rollup/rollup-linux-arm-musleabihf@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz#f4c4e7c03a7767f2e5aa9d0c5cfbf5c0f59f2d41" - integrity sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA== - -"@rollup/rollup-linux-arm64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz#2550cf9bb4d47d917fd1ab4af756d7bbc3ee1528" - integrity sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw== - -"@rollup/rollup-linux-arm64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz#fac700fa5c38bc13a0d5d34463133093da4c92a0" - integrity sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A== - -"@rollup/rollup-linux-arm64-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz#1015c9d07a99005025d13b8622b7600029d0b52f" - integrity sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw== - -"@rollup/rollup-linux-arm64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz#9d06b26d286c7dded6336961a2f83e48330e0c80" - integrity sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA== - -"@rollup/rollup-linux-arm64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz#f50ecccf8c78841ff6df1706bc4782d7f62bf9c3" - integrity sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q== - -"@rollup/rollup-linux-arm64-musl@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz#8f895eb5577748fc75af21beae32439626e0a14c" - integrity sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A== - -"@rollup/rollup-linux-loongarch64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz#e957bb8fee0c8021329a34ca8dfa825826ee0e2e" - integrity sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ== - -"@rollup/rollup-linux-loongarch64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz#5869dc0b28242da6553e2b52af41374f4038cd6e" - integrity sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ== - -"@rollup/rollup-linux-loongarch64-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz#c9cd5dbbdc6b3ca4dbeeb0337498cf31949004a0" - integrity sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg== - -"@rollup/rollup-linux-powerpc64le-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz#e8585075ddfb389222c5aada39ea62d6d2511ccc" - integrity sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz#5cdd9f851ce1bea33d6844a69f9574de335f20b1" - integrity sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz#7ebb5b4441faa17843a210f7d0583a20c93b40e4" - integrity sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA== - -"@rollup/rollup-linux-riscv64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz#7d0d40cee7946ccaa5a4e19a35c6925444696a9e" - integrity sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw== - -"@rollup/rollup-linux-riscv64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz#ef5dc37f4388f5253f0def43e1440ec012af204d" - integrity sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw== - -"@rollup/rollup-linux-riscv64-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz#10f5d7349fbd2fe78f9e36ecc90aab3154435c8d" - integrity sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg== - -"@rollup/rollup-linux-s390x-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz#c2dcd8a4b08b2f2778eceb7a5a5dfde6240ebdea" - integrity sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA== - -"@rollup/rollup-linux-s390x-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz#7dbc3ccbcbcfb3e65be74538dfb6e8dd16178fde" - integrity sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA== - -"@rollup/rollup-linux-s390x-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz#196347d2fa20593ab09d0b7e2589fb69bdf742c6" - integrity sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ== - -"@rollup/rollup-linux-x64-gnu@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz#183637d91456877cb83d0a0315eb4788573aa588" - integrity sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg== - -"@rollup/rollup-linux-x64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz#5783fc0adcab7dc069692056e8ca8d83709855ce" - integrity sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA== - -"@rollup/rollup-linux-x64-gnu@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz#7193cbd8d128212b8acda37e01b39d9e96259ef8" - integrity sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A== - -"@rollup/rollup-linux-x64-musl@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz#036a4c860662519f1f9453807547fd2a11d5bb01" - integrity sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow== - -"@rollup/rollup-linux-x64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz#00b6c29b298197a384e3c659910b47943003a678" - integrity sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ== - -"@rollup/rollup-linux-x64-musl@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz#29a6867278ca0420b891574cfab98ecad70c59d1" - integrity sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA== - -"@rollup/rollup-win32-arm64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz#51cad812456e616bfe4db5238fb9c7497e042a52" - integrity sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw== - -"@rollup/rollup-win32-arm64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz#cbfee01f1fe73791c35191a05397838520ca3cdd" - integrity sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ== - -"@rollup/rollup-win32-arm64-msvc@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz#89427dcac0c8e3a6d32b13a03a296a275d0de9a9" - integrity sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q== - -"@rollup/rollup-win32-ia32-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz#661c8b3e4cd60f51deaa39d153aac4566e748e5e" - integrity sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw== - -"@rollup/rollup-win32-ia32-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz#95cdbdff48fe6c948abcf6a1d500b2bd5ce33f62" - integrity sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w== - -"@rollup/rollup-win32-ia32-msvc@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz#ecb9711ba2b6d2bf6ee51265abe057ab90913deb" - integrity sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w== - -"@rollup/rollup-win32-x64-msvc@4.30.1": - version "4.30.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz#73bf1885ff052b82fbb0f82f8671f73c36e9137c" - integrity sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og== - -"@rollup/rollup-win32-x64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz#4cdb2cfae69cdb7b1a3cc58778e820408075e928" - integrity sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g== - -"@rollup/rollup-win32-x64-msvc@4.34.9": - version "4.34.9" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz#1973871850856ae72bc678aeb066ab952330e923" - integrity sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw== +"@rollup/rollup-android-arm-eabi@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz#e1d7700735f7e8de561ef7d1fa0362082a180c43" + integrity sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ== + +"@rollup/rollup-android-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz#fa6cdfb1fc9e2c8e227a7f35d524d8f7f90cf4db" + integrity sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA== + +"@rollup/rollup-darwin-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz#6da5a1ddc4f11d4a7ae85ab443824cb6bf614e30" + integrity sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q== + +"@rollup/rollup-darwin-x64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz#25b74ce2d8d3f9ea8e119b01384d44a1c0a0d3ae" + integrity sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q== + +"@rollup/rollup-freebsd-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz#be3d39e3441df5d6e187c83d158c60656c82e203" + integrity sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ== + +"@rollup/rollup-freebsd-x64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz#cd932d3ec679711efd65ca25821fb318e25b7ce4" + integrity sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw== + +"@rollup/rollup-linux-arm-gnueabihf@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz#d300b74c6f805474225632f185daaeae760ac2bb" + integrity sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg== + +"@rollup/rollup-linux-arm-musleabihf@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz#2caac622380f314c41934ed1e68ceaf6cc380cc3" + integrity sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A== + +"@rollup/rollup-linux-arm64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz#1ec841650b038cc15c194c26326483fd7ebff3e3" + integrity sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A== + +"@rollup/rollup-linux-arm64-musl@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz#2fc70a446d986e27f6101ea74e81746987f69150" + integrity sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg== + +"@rollup/rollup-linux-loongarch64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz#561bd045cd9ce9e08c95f42e7a8688af8c93d764" + integrity sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g== + +"@rollup/rollup-linux-powerpc64le-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz#45d849a0b33813f33fe5eba9f99e0ff15ab5caad" + integrity sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA== + +"@rollup/rollup-linux-riscv64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz#78dde3e6fcf5b5733a97d0a67482d768aa1e83a5" + integrity sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g== + +"@rollup/rollup-linux-s390x-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz#2e34835020f9e03dfb411473a5c2a0e8a9c5037b" + integrity sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw== + +"@rollup/rollup-linux-x64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz#4f9774beddc6f4274df57ac99862eb23040de461" + integrity sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA== + +"@rollup/rollup-linux-x64-musl@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz#dfcff2c1aed518b3d23ccffb49afb349d74fb608" + integrity sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg== + +"@rollup/rollup-win32-arm64-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz#b0b37e2d77041e3aa772f519291309abf4c03a84" + integrity sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg== + +"@rollup/rollup-win32-ia32-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz#5b5a40e44a743ddc0e06b8e1b3982f856dc9ce0a" + integrity sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw== + +"@rollup/rollup-win32-x64-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz#05f25dbc9981bee1ae6e713daab10397044a46ca" + integrity sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw== "@schematics/angular@14.2.13": version "14.2.13" @@ -26791,32 +26601,32 @@ rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: dependencies: estree-walker "^0.6.1" -rollup@4.34.9: - version "4.34.9" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.9.tgz#e1eb397856476778aeb6ac2ac3d09b2ce177a558" - integrity sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ== +rollup@4.35.0, rollup@^4.18.0, rollup@^4.20.0, rollup@^4.30.1, rollup@^4.35.0: + version "4.35.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.35.0.tgz#76c95dba17a579df4c00c3955aed32aa5d4dc66d" + integrity sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.34.9" - "@rollup/rollup-android-arm64" "4.34.9" - "@rollup/rollup-darwin-arm64" "4.34.9" - "@rollup/rollup-darwin-x64" "4.34.9" - "@rollup/rollup-freebsd-arm64" "4.34.9" - "@rollup/rollup-freebsd-x64" "4.34.9" - "@rollup/rollup-linux-arm-gnueabihf" "4.34.9" - "@rollup/rollup-linux-arm-musleabihf" "4.34.9" - "@rollup/rollup-linux-arm64-gnu" "4.34.9" - "@rollup/rollup-linux-arm64-musl" "4.34.9" - "@rollup/rollup-linux-loongarch64-gnu" "4.34.9" - "@rollup/rollup-linux-powerpc64le-gnu" "4.34.9" - "@rollup/rollup-linux-riscv64-gnu" "4.34.9" - "@rollup/rollup-linux-s390x-gnu" "4.34.9" - "@rollup/rollup-linux-x64-gnu" "4.34.9" - "@rollup/rollup-linux-x64-musl" "4.34.9" - "@rollup/rollup-win32-arm64-msvc" "4.34.9" - "@rollup/rollup-win32-ia32-msvc" "4.34.9" - "@rollup/rollup-win32-x64-msvc" "4.34.9" + "@rollup/rollup-android-arm-eabi" "4.35.0" + "@rollup/rollup-android-arm64" "4.35.0" + "@rollup/rollup-darwin-arm64" "4.35.0" + "@rollup/rollup-darwin-x64" "4.35.0" + "@rollup/rollup-freebsd-arm64" "4.35.0" + "@rollup/rollup-freebsd-x64" "4.35.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.35.0" + "@rollup/rollup-linux-arm-musleabihf" "4.35.0" + "@rollup/rollup-linux-arm64-gnu" "4.35.0" + "@rollup/rollup-linux-arm64-musl" "4.35.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.35.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.35.0" + "@rollup/rollup-linux-riscv64-gnu" "4.35.0" + "@rollup/rollup-linux-s390x-gnu" "4.35.0" + "@rollup/rollup-linux-x64-gnu" "4.35.0" + "@rollup/rollup-linux-x64-musl" "4.35.0" + "@rollup/rollup-win32-arm64-msvc" "4.35.0" + "@rollup/rollup-win32-ia32-msvc" "4.35.0" + "@rollup/rollup-win32-x64-msvc" "4.35.0" fsevents "~2.3.2" rollup@^2.70.0: @@ -26833,62 +26643,6 @@ rollup@^3.27.1, rollup@^3.28.1: optionalDependencies: fsevents "~2.3.2" -rollup@^4.18.0, rollup@^4.20.0, rollup@^4.24.2: - version "4.30.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.30.1.tgz#d5c3d066055259366cdc3eb6f1d051c5d6afaf74" - integrity sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.30.1" - "@rollup/rollup-android-arm64" "4.30.1" - "@rollup/rollup-darwin-arm64" "4.30.1" - "@rollup/rollup-darwin-x64" "4.30.1" - "@rollup/rollup-freebsd-arm64" "4.30.1" - "@rollup/rollup-freebsd-x64" "4.30.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.30.1" - "@rollup/rollup-linux-arm-musleabihf" "4.30.1" - "@rollup/rollup-linux-arm64-gnu" "4.30.1" - "@rollup/rollup-linux-arm64-musl" "4.30.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.30.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.30.1" - "@rollup/rollup-linux-riscv64-gnu" "4.30.1" - "@rollup/rollup-linux-s390x-gnu" "4.30.1" - "@rollup/rollup-linux-x64-gnu" "4.30.1" - "@rollup/rollup-linux-x64-musl" "4.30.1" - "@rollup/rollup-win32-arm64-msvc" "4.30.1" - "@rollup/rollup-win32-ia32-msvc" "4.30.1" - "@rollup/rollup-win32-x64-msvc" "4.30.1" - fsevents "~2.3.2" - -rollup@^4.30.1: - version "4.34.8" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.8.tgz#e859c1a51d899aba9bcf451d4eed1d11fb8e2a6e" - integrity sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.34.8" - "@rollup/rollup-android-arm64" "4.34.8" - "@rollup/rollup-darwin-arm64" "4.34.8" - "@rollup/rollup-darwin-x64" "4.34.8" - "@rollup/rollup-freebsd-arm64" "4.34.8" - "@rollup/rollup-freebsd-x64" "4.34.8" - "@rollup/rollup-linux-arm-gnueabihf" "4.34.8" - "@rollup/rollup-linux-arm-musleabihf" "4.34.8" - "@rollup/rollup-linux-arm64-gnu" "4.34.8" - "@rollup/rollup-linux-arm64-musl" "4.34.8" - "@rollup/rollup-linux-loongarch64-gnu" "4.34.8" - "@rollup/rollup-linux-powerpc64le-gnu" "4.34.8" - "@rollup/rollup-linux-riscv64-gnu" "4.34.8" - "@rollup/rollup-linux-s390x-gnu" "4.34.8" - "@rollup/rollup-linux-x64-gnu" "4.34.8" - "@rollup/rollup-linux-x64-musl" "4.34.8" - "@rollup/rollup-win32-arm64-msvc" "4.34.8" - "@rollup/rollup-win32-ia32-msvc" "4.34.8" - "@rollup/rollup-win32-x64-msvc" "4.34.8" - fsevents "~2.3.2" - rrweb-cssom@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" From 16e40f4129db57413de6c6ba3b318658cda7118a Mon Sep 17 00:00:00 2001 From: Nathan Sarang-Walters Date: Mon, 17 Mar 2025 11:52:18 -0400 Subject: [PATCH 04/13] feat(ci): Run yarn-deduplicate in CI (#15119) --- .github/workflows/build.yml | 3 + package.json | 5 +- yarn.lock | 149 ++++++++---------------------------- 3 files changed, 39 insertions(+), 118 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6611746776c7..aad0f9057953 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -274,6 +274,9 @@ jobs: uses: ./.github/actions/restore-cache with: dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }} + - name: Check for duplicate dependencies in lockfile + # Run `yarn dedupe-deps:fix` locally to resolve any duplicates. + run: yarn dedupe-deps:check - name: Lint source files run: yarn lint:lerna - name: Lint for ES compatibility diff --git a/package.json b/package.json index 0bdc7f7a4459..138ed7d787de 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,8 @@ "lint:lerna": "lerna run lint", "lint:prettier": "prettier \"**/*.{md,css,yml,yaml}\" \"packages/**/**.{ts,js,mjs,cjs,mts,cts,jsx,tsx,astro,vue}\" --check", "lint:es-compatibility": "es-check es2020 ./packages/*/build/{bundles,npm/cjs,cjs}/*.js && es-check es2020 ./packages/*/build/{npm/esm,esm}/*.js --module", + "dedupe-deps:check": "yarn-deduplicate yarn.lock --list --fail", + "dedupe-deps:fix": "yarn-deduplicate yarn.lock", "postpublish": "lerna run --stream --concurrency 1 postpublish", "test": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests}\" test", "test:unit": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests}\" test:unit", @@ -135,7 +137,8 @@ "ts-node": "10.9.1", "typescript": "~5.0.0", "vitest": "^2.1.8", - "yalc": "^1.0.0-pre.53" + "yalc": "^1.0.0-pre.53", + "yarn-deduplicate": "6.0.2" }, "//_resolutions_comment": [ "Because new versions of strip-ansi, string-width, and wrap-ansi are ESM only packages,", diff --git a/yarn.lock b/yarn.lock index 36df2e86a6f7..dd616a338a9e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6267,7 +6267,7 @@ valibot "^0.41.0" vite-node "3.0.0-beta.2" -"@react-router/node@7.2.0": +"@react-router/node@7.2.0", "@react-router/node@^7.1.5": version "7.2.0" resolved "https://registry.yarnpkg.com/@react-router/node/-/node-7.2.0.tgz#c060130febe9db96112f29503bafc6cb82e7b8a6" integrity sha512-CqBHLwvvV4BB8htmaSwT+SOwX9B4RVOIiEdTlaIp12sNVCGSYDIEGbv3T4Wxeq8p5ynNfhNcdBeXtZ6ZPWVozA== @@ -6277,16 +6277,6 @@ stream-slice "^0.1.2" undici "^6.19.2" -"@react-router/node@^7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@react-router/node/-/node-7.1.5.tgz#fe4bdb708bb574cbf21b359d1263f6accde737bd" - integrity sha512-Ga8xFHxO2yt5TpGwV5xYx4LC3eUDmhT6jYfTbMFb6F7hBA9sLdHxNfYZCe2WEfVZ4/BM7I8989Qzq6BWilV2LA== - dependencies: - "@mjackson/node-fetch-server" "^0.2.0" - source-map-support "^0.5.21" - stream-slice "^0.1.2" - undici "^6.19.2" - "@redis/bloom@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" @@ -9676,14 +9666,7 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -agent-base@^7.1.2: +agent-base@^7.1.0, agent-base@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== @@ -10493,7 +10476,7 @@ aws-ssl-profiles@^1.1.1: resolved "https://registry.yarnpkg.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz#157dd77e9f19b1d123678e93f120e6f193022641" integrity sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g== -axios@1.8.2: +axios@1.8.2, axios@^1.0.0, axios@^1.7.7: version "1.8.2" resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979" integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg== @@ -10502,15 +10485,6 @@ axios@1.8.2: form-data "^4.0.0" proxy-from-env "^1.1.0" -axios@^1.0.0, axios@^1.7.7: - version "1.7.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" - integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" @@ -11604,23 +11578,16 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -bson@*: - version "4.6.2" - resolved "https://registry.yarnpkg.com/bson/-/bson-4.6.2.tgz#3241c79d23d225b86ab6d2bc268b803d8a5fd444" - integrity sha512-VeJKHShcu1b/ugl0QiujlVuBepab714X9nNyBdA1kfekuDGecxgpTA2Z6nYbagrWFeiIyzSWIOzju3lhj+RNyQ== - dependencies: - buffer "^5.6.0" +bson@*, bson@^6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.10.3.tgz#5f9a463af6b83e264bedd08b236d1356a30eda47" + integrity sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ== bson@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a" integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== -bson@^6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.10.3.tgz#5f9a463af6b83e264bedd08b236d1356a30eda47" - integrity sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ== - buffer-crc32@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" @@ -11651,7 +11618,7 @@ buffer-writer@2.0.0: resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== -buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -12086,20 +12053,13 @@ check-error@^2.1.1: optionalDependencies: fsevents "~2.3.2" -chokidar@^4.0.0: +chokidar@^4.0.0, chokidar@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== dependencies: readdirp "^4.0.1" -chokidar@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41" - integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA== - dependencies: - readdirp "^4.0.1" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -17852,14 +17812,7 @@ hosted-git-info@^5.0.0: dependencies: lru-cache "^7.5.1" -hosted-git-info@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" - integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^6.1.1: +hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: version "6.1.3" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.3.tgz#2ee1a14a097a1236bddf8672c35b613c46c55946" integrity sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw== @@ -18069,15 +18022,7 @@ https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: agent-base "6" debug "4" -https-proxy-agent@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== - dependencies: - agent-base "^7.0.2" - debug "4" - -https-proxy-agent@^7.0.5: +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.5: version "7.0.6" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== @@ -22318,12 +22263,7 @@ named-placeholders@^1.1.3: dependencies: lru-cache "^7.14.1" -nanoid@^3.3.3, nanoid@^3.3.4, nanoid@^3.3.6, nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -nanoid@^3.3.8: +nanoid@^3.3.3, nanoid@^3.3.4, nanoid@^3.3.6, nanoid@^3.3.7, nanoid@^3.3.8: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== @@ -24975,16 +24915,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.1.10, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.3.7, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.39, postcss@^8.4.43, postcss@^8.4.47, postcss@^8.4.7, postcss@^8.4.8: - version "8.4.49" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" - integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== - dependencies: - nanoid "^3.3.7" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -postcss@^8.5.2: +postcss@^8.1.10, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.3.7, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.39, postcss@^8.4.43, postcss@^8.4.47, postcss@^8.4.7, postcss@^8.4.8, postcss@^8.5.2: version "8.5.3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== @@ -25108,12 +25039,7 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@^2.5.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -prettier@^2.7.1: +prettier@^2.5.1, prettier@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -25846,7 +25772,7 @@ realistic-structured-clone@^3.0.0: typeson "^6.1.0" typeson-registry "^1.0.0-alpha.20" -recast@0.23.11: +recast@0.23.11, recast@^0.23.4: version "0.23.11" resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.11.tgz#8885570bb28cf773ba1dc600da7f502f7883f73f" integrity sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA== @@ -25877,17 +25803,6 @@ recast@^0.20.5: source-map "~0.6.1" tslib "^2.0.1" -recast@^0.23.4: - version "0.23.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b" - integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q== - dependencies: - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tiny-invariant "^1.3.3" - tslib "^2.0.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -26928,10 +26843,10 @@ semver@7.5.3: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.6.3: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.6.3: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" @@ -26969,22 +26884,12 @@ serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" -seroval-plugins@^1.0.2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/seroval-plugins/-/seroval-plugins-1.0.7.tgz#c02511a1807e9bc8f68a91fbec13474fa9cea670" - integrity sha512-GO7TkWvodGp6buMEX9p7tNyIkbwlyuAWbI6G9Ec5bhcm7mQdu3JOK1IXbEUwb3FVzSc363GraG/wLW23NSavIw== - -seroval-plugins@^1.1.0: +seroval-plugins@^1.0.2, seroval-plugins@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/seroval-plugins/-/seroval-plugins-1.2.1.tgz#fa535e70ade8af553634b2b5c80d8a6fd8c2ff72" integrity sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw== -seroval@^1.0.2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/seroval/-/seroval-1.0.7.tgz#ee48ad8ba69f1595bdd5c55d1a0d1da29dee7455" - integrity sha512-n6ZMQX5q0Vn19Zq7CIKNIo7E75gPkGCFUEqDpa8jgwpYr/vScjqnQ6H09t1uIiZ0ZSK0ypEGvrYK2bhBGWsGdw== - -seroval@^1.1.0: +seroval@^1.0.2, seroval@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/seroval/-/seroval-1.2.1.tgz#fc671d63445923ab64f7abaf3967c83901382f40" integrity sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw== @@ -29009,7 +28914,7 @@ tslib@2.7.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== -tslib@2.8.1, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.6.2, tslib@^2.7.0: +tslib@2.8.1, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1, tslib@^2.5.0, tslib@^2.6.2, tslib@^2.7.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -31126,6 +31031,16 @@ yargs@^17.2.1, yargs@^17.5.1, yargs@^17.6.0, yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yarn-deduplicate@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-6.0.2.tgz#63498d2d4c3a8567e992a994ce0ab51aa5681f2e" + integrity sha512-Efx4XEj82BgbRJe5gvQbZmEO7pU5DgHgxohYZp98/+GwPqdU90RXtzvHirb7hGlde0sQqk5G3J3Woyjai8hVqA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + commander "^10.0.1" + semver "^7.5.0" + tslib "^2.5.0" + yauzl@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-3.2.0.tgz#7b6cb548f09a48a6177ea0be8ece48deb7da45c0" From 26e2d1774db28cfad2a982e9a1d058e068c691ee Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 18 Mar 2025 10:18:04 +0100 Subject: [PATCH 05/13] fix(nuxt): Add Nitro Rollup plugin to inject Sentry server config (#15710) Previously, the Sentry server config was added by adding another entry point in the rollup options of Vite. Since Nuxt changed `preserveModules` to `true`, this did not work anymore. The aim of this change in Nuxt is to avoid duplicating what the Nitro build would do. This means, that we now don't change the Rollup options in Vite anymore (affects Nuxt as a whole) but only the Rollup options during the Nitro build. The added plugin will emit a new file and returns the Sentry config code there. fixes https://github.com/getsentry/sentry-javascript/issues/15628 --- packages/nuxt/src/module.ts | 2 +- packages/nuxt/src/vite/addServerConfig.ts | 60 ++++++++++++++++++----- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 4f0abce6a8ef..c239aeaf1432 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -113,7 +113,7 @@ export default defineNuxtModule({ }); if (moduleOptions.autoInjectServerSentry !== 'experimental_dynamic-import') { - addServerConfigToBuild(moduleOptions, nuxt, nitro, serverConfigFile); + addServerConfigToBuild(moduleOptions, nitro, serverConfigFile); if (moduleOptions.debug) { const serverDirResolver = createResolver(nitro.options.output.serverDir); diff --git a/packages/nuxt/src/vite/addServerConfig.ts b/packages/nuxt/src/vite/addServerConfig.ts index b5577830396b..3ee59a210cdd 100644 --- a/packages/nuxt/src/vite/addServerConfig.ts +++ b/packages/nuxt/src/vite/addServerConfig.ts @@ -1,7 +1,6 @@ import * as fs from 'fs'; import { createResolver } from '@nuxt/kit'; -import type { Nuxt } from '@nuxt/schema'; -import { consoleSandbox } from '@sentry/core'; +import { consoleSandbox, logger } from '@sentry/core'; import type { Nitro } from 'nitropack'; import type { InputPluginOption } from 'rollup'; import type { SentryNuxtModuleOptions } from '../common/types'; @@ -15,6 +14,7 @@ import { getFilenameFromNodeStartCommand, removeSentryQueryFromPath, } from './utils'; +import { existsSync } from 'node:fs'; const SERVER_CONFIG_FILENAME = 'sentry.server.config'; @@ -26,19 +26,18 @@ const SERVER_CONFIG_FILENAME = 'sentry.server.config'; */ export function addServerConfigToBuild( moduleOptions: SentryNuxtModuleOptions, - nuxt: Nuxt, nitro: Nitro, serverConfigFile: string, ): void { - nuxt.hook('vite:extendConfig', async (viteInlineConfig, _env) => { - if ( - typeof viteInlineConfig?.build?.rollupOptions?.input === 'object' && - 'server' in viteInlineConfig.build.rollupOptions.input - ) { - // Create a rollup entry for the server config to add it as `sentry.server.config.mjs` to the build - (viteInlineConfig.build.rollupOptions.input as { [entryName: string]: string })[SERVER_CONFIG_FILENAME] = - createResolver(nuxt.options.srcDir).resolve(`/${serverConfigFile}`); + nitro.hooks.hook('rollup:before', (nitro, rollupConfig) => { + if (rollupConfig?.plugins === null || rollupConfig?.plugins === undefined) { + rollupConfig.plugins = []; + } else if (!Array.isArray(rollupConfig.plugins)) { + // `rollupConfig.plugins` can be a single plugin, so we want to put it into an array so that we can push our own plugin + rollupConfig.plugins = [rollupConfig.plugins]; } + + rollupConfig.plugins.push(injectServerConfigPlugin(nitro, serverConfigFile, moduleOptions.debug)); }); /** @@ -158,6 +157,45 @@ export function addDynamicImportEntryFileWrapper( ); } +/** + * Rollup plugin to include the Sentry server configuration file to the server build output. + */ +function injectServerConfigPlugin(nitro: Nitro, serverConfigFile: string, debug?: boolean): InputPluginOption { + const filePrefix = '\0virtual:sentry-server-config:'; + + return { + name: 'rollup-plugin-inject-sentry-server-config', + + buildStart() { + const configPath = createResolver(nitro.options.srcDir).resolve(`/${serverConfigFile}`); + + if (!existsSync(configPath)) { + if (debug) { + logger.log(`[Sentry] Sentry server config file not found: ${configPath}`); + } + return; + } + + // Emitting a file adds it to the build output (Rollup is aware of the file, and we can later return the code in resolveId) + this.emitFile({ + type: 'chunk', + id: `${filePrefix}${serverConfigFile}`, + fileName: `${SERVER_CONFIG_FILENAME}.mjs`, + }); + }, + + resolveId(source) { + if (source.startsWith(filePrefix)) { + const originalFilePath = source.replace(filePrefix, ''); + const configPath = createResolver(nitro.options.rootDir).resolve(`/${originalFilePath}`); + + return { id: configPath }; + } + return null; + }, + }; +} + /** * A Rollup plugin which wraps the server entry with a dynamic `import()`. This makes it possible to initialize Sentry first * by using a regular `import` and load the server after that. From 2e5926c1a9f7058b4a31659909581b720dae5bb5 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Tue, 18 Mar 2025 09:44:43 -0400 Subject: [PATCH 06/13] test(browser-utils): Add test to make sure we run `originalHistoryFunction` if urls are the same (#15716) resolves https://github.com/getsentry/sentry-javascript/issues/15594 --- .../test/instrument/history.test.ts | 67 ++++++++++++++++++- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/packages/browser-utils/test/instrument/history.test.ts b/packages/browser-utils/test/instrument/history.test.ts index 9d9ffd5b0686..98c42580c20c 100644 --- a/packages/browser-utils/test/instrument/history.test.ts +++ b/packages/browser-utils/test/instrument/history.test.ts @@ -1,13 +1,12 @@ -import { describe, expect, it, vi } from 'vitest'; +import { describe, expect, it, vi, afterEach } from 'vitest'; import { WINDOW } from '../../src/types'; -import { afterEach } from 'node:test'; import { instrumentHistory } from './../../src/instrument/history'; +import * as instrumentHandlersModule from '@sentry/core'; describe('instrumentHistory', () => { const originalHistory = WINDOW.history; WINDOW.addEventListener = vi.fn(); - afterEach(() => { // @ts-expect-error - this is fine for testing WINDOW.history = originalHistory; @@ -55,4 +54,66 @@ describe('instrumentHistory', () => { pushState: expect.any(Function), // patched function }); }); + + it('does not trigger handlers when the URLs are the same', () => { + const triggerHandlerSpy = vi.spyOn(instrumentHandlersModule, 'triggerHandlers'); + const pushStateMock = vi.fn(); + + // @ts-expect-error - this is fine for testing + WINDOW.history = { + pushState: pushStateMock, + replaceState: () => {}, + }; + + instrumentHistory(); + + // First call with URL1 to set lastHref + WINDOW.history.pushState({}, '', 'https://example.com/page1'); + expect(pushStateMock).toHaveBeenCalledTimes(1); + + // Reset mocks to check next call + pushStateMock.mockClear(); + vi.mocked(triggerHandlerSpy).mockClear(); + + // Call with the same URL + WINDOW.history.pushState({}, '', 'https://example.com/page1'); + + expect(pushStateMock).toHaveBeenCalledTimes(1); + expect(triggerHandlerSpy).not.toHaveBeenCalled(); + }); + + it('triggers handlers when the URLs are different', () => { + const triggerHandlerSpy = vi.spyOn(instrumentHandlersModule, 'triggerHandlers'); + // Setup a mock for history.pushState + const pushStateMock = vi.fn(); + + // @ts-expect-error - this is fine for testing + WINDOW.history = { + pushState: pushStateMock, + replaceState: () => {}, + }; + + // Run the instrumentation + instrumentHistory(); + + // First call with URL1 to set lastHref + WINDOW.history.pushState({}, '', 'https://example.com/page1'); + expect(pushStateMock).toHaveBeenCalledTimes(1); + + // Reset mocks to check next call + pushStateMock.mockClear(); + vi.mocked(triggerHandlerSpy).mockClear(); + + // Call with a different URL + WINDOW.history.pushState({}, '', 'https://example.com/page2'); + + // Original function should be called + expect(pushStateMock).toHaveBeenCalledTimes(1); + + // triggerHandlers should be called with from and to data + expect(triggerHandlerSpy).toHaveBeenCalledWith('history', { + from: 'https://example.com/page1', + to: 'https://example.com/page2', + }); + }); }); From 469dae2b2b1db12668ac00d939f1ea577af425d7 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 18 Mar 2025 15:31:19 +0100 Subject: [PATCH 07/13] fix(nextjs): Re-patch router if it is overriden by Next.js (#15721) Fixes https://github.com/getsentry/sentry-javascript/issues/15700 --- .../appRouterRoutingInstrumentation.ts | 104 ++++++++++++------ 1 file changed, 69 insertions(+), 35 deletions(-) diff --git a/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts b/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts index 312a7119c250..11f3351dcd15 100644 --- a/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts +++ b/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts @@ -24,6 +24,10 @@ export function appRouterInstrumentPageLoad(client: Client): void { }); } +interface NavigationSpanRef { + current: Span | undefined; +} + interface NextRouter { back: () => void; forward: () => void; @@ -57,14 +61,14 @@ const GLOBAL_OBJ_WITH_NEXT_ROUTER = GLOBAL_OBJ as typeof GLOBAL_OBJ & { /** Instruments the Next.js app router for navigation. */ export function appRouterInstrumentNavigation(client: Client): void { - let currentNavigationSpan: Span | undefined = undefined; + const currentNavigationSpanRef: NavigationSpanRef = { current: undefined }; WINDOW.addEventListener('popstate', () => { - if (currentNavigationSpan?.isRecording()) { - currentNavigationSpan.updateName(WINDOW.location.pathname); - currentNavigationSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'url'); + if (currentNavigationSpanRef.current?.isRecording()) { + currentNavigationSpanRef.current.updateName(WINDOW.location.pathname); + currentNavigationSpanRef.current.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'url'); } else { - currentNavigationSpan = startBrowserTracingNavigationSpan(client, { + currentNavigationSpanRef.current = startBrowserTracingNavigationSpan(client, { name: WINDOW.location.pathname, attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', @@ -89,38 +93,22 @@ export function appRouterInstrumentNavigation(client: Client): void { } else if (router) { clearInterval(checkForRouterAvailabilityInterval); routerPatched = true; - (['back', 'forward', 'push', 'replace'] as const).forEach(routerFunctionName => { - if (router?.[routerFunctionName]) { - // @ts-expect-error Weird type error related to not knowing how to associate return values with the individual functions - we can just ignore - router[routerFunctionName] = new Proxy(router[routerFunctionName], { - apply(target, thisArg, argArray) { - let transactionName = INCOMPLETE_APP_ROUTER_INSTRUMENTATION_TRANSACTION_NAME; - const transactionAttributes: Record = { - [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', - [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.nextjs.app_router_instrumentation', - [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', - }; - - if (routerFunctionName === 'push') { - transactionName = transactionNameifyRouterArgument(argArray[0]); - transactionAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'url'; - transactionAttributes['navigation.type'] = 'router.push'; - } else if (routerFunctionName === 'replace') { - transactionName = transactionNameifyRouterArgument(argArray[0]); - transactionAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'url'; - transactionAttributes['navigation.type'] = 'router.replace'; - } else if (routerFunctionName === 'back') { - transactionAttributes['navigation.type'] = 'router.back'; - } else if (routerFunctionName === 'forward') { - transactionAttributes['navigation.type'] = 'router.forward'; - } - currentNavigationSpan = startBrowserTracingNavigationSpan(client, { - name: transactionName, - attributes: transactionAttributes, - }); + patchRouter(client, router, currentNavigationSpanRef); + + // If the router at any point gets overridden - patch again + (['nd', 'next'] as const).forEach(globalValueName => { + const globalValue = GLOBAL_OBJ_WITH_NEXT_ROUTER[globalValueName]; + if (globalValue) { + GLOBAL_OBJ_WITH_NEXT_ROUTER[globalValueName] = new Proxy(globalValue, { + set(target, p, newValue) { + if (p === 'router' && typeof newValue === 'object' && newValue !== null) { + patchRouter(client, newValue, currentNavigationSpanRef); + } - return target.apply(thisArg, argArray); + // @ts-expect-error we cannot possibly type this + target[p] = newValue; + return true; }, }); } @@ -137,3 +125,49 @@ function transactionNameifyRouterArgument(target: string): string { return '/'; } } + +const patchedRouters = new WeakSet(); + +function patchRouter(client: Client, router: NextRouter, currentNavigationSpanRef: NavigationSpanRef): void { + if (patchedRouters.has(router)) { + return; + } + patchedRouters.add(router); + + (['back', 'forward', 'push', 'replace'] as const).forEach(routerFunctionName => { + if (router?.[routerFunctionName]) { + // @ts-expect-error Weird type error related to not knowing how to associate return values with the individual functions - we can just ignore + router[routerFunctionName] = new Proxy(router[routerFunctionName], { + apply(target, thisArg, argArray) { + let transactionName = INCOMPLETE_APP_ROUTER_INSTRUMENTATION_TRANSACTION_NAME; + const transactionAttributes: Record = { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.nextjs.app_router_instrumentation', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }; + + if (routerFunctionName === 'push') { + transactionName = transactionNameifyRouterArgument(argArray[0]); + transactionAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'url'; + transactionAttributes['navigation.type'] = 'router.push'; + } else if (routerFunctionName === 'replace') { + transactionName = transactionNameifyRouterArgument(argArray[0]); + transactionAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'url'; + transactionAttributes['navigation.type'] = 'router.replace'; + } else if (routerFunctionName === 'back') { + transactionAttributes['navigation.type'] = 'router.back'; + } else if (routerFunctionName === 'forward') { + transactionAttributes['navigation.type'] = 'router.forward'; + } + + currentNavigationSpanRef.current = startBrowserTracingNavigationSpan(client, { + name: transactionName, + attributes: transactionAttributes, + }); + + return target.apply(thisArg, argArray); + }, + }); + } + }); +} From 90f41dbac27dfb19aee82b34223c986531ee2c52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 14:58:35 +0000 Subject: [PATCH 08/13] feat(deps): bump @prisma/instrumentation from 6.4.1 to 6.5.0 (#15714) --- packages/node/package.json | 2 +- yarn.lock | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/node/package.json b/packages/node/package.json index c4906f3eb225..ab8493cc0b40 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -95,7 +95,7 @@ "@opentelemetry/resources": "^1.30.1", "@opentelemetry/sdk-trace-base": "^1.30.1", "@opentelemetry/semantic-conventions": "^1.30.0", - "@prisma/instrumentation": "6.4.1", + "@prisma/instrumentation": "6.5.0", "@sentry/core": "9.6.0", "@sentry/opentelemetry": "9.6.0", "import-in-the-middle": "^1.13.0" diff --git a/yarn.lock b/yarn.lock index dd616a338a9e..61dfa6812ef3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6136,10 +6136,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== -"@prisma/instrumentation@6.4.1": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-6.4.1.tgz#3a0fb65bfb3e3a6712c41f9334599fa281c451d5" - integrity sha512-1SeN0IvMp5zm3RLJnEr+Zn67WDqUIPP1lF/PkLbi/X64vsnFyItcXNRBrYr0/sI2qLcH9iNzJUhyd3emdGizaQ== +"@prisma/instrumentation@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-6.5.0.tgz#ce6c160365dfccbe0f4e7c57a4afc4f946fee562" + integrity sha512-morJDtFRoAp5d/KENEm+K6Y3PQcn5bCvpJ5a9y3V3DNMrNy/ZSn2zulPGj+ld+Xj2UYVoaMJ8DpBX/o6iF6OiA== dependencies: "@opentelemetry/instrumentation" "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" @@ -28099,6 +28099,7 @@ stylus@0.59.0, stylus@^0.59.0: sucrase@^3.27.0, sucrase@^3.35.0, sucrase@getsentry/sucrase#es2020-polyfills: version "3.36.0" + uid fd682f6129e507c00bb4e6319cc5d6b767e36061 resolved "https://codeload.github.com/getsentry/sucrase/tar.gz/fd682f6129e507c00bb4e6319cc5d6b767e36061" dependencies: "@jridgewell/gen-mapping" "^0.3.2" From a5e59452ad8d4764e84d157a265ea41b0ff7cf76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 15:35:06 +0000 Subject: [PATCH 09/13] feat(deps): bump @sentry/cli from 2.42.2 to 2.42.3 (#15711) --- packages/react-router/package.json | 2 +- packages/remix/package.json | 2 +- yarn.lock | 56 +++++++++++++++++++++++++++++- 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 5fb5b03f52ca..6e1c1997804a 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@sentry/browser": "9.6.0", - "@sentry/cli": "^2.42.2", + "@sentry/cli": "^2.42.3", "@sentry/core": "9.6.0", "@sentry/node": "9.6.0", "@sentry/vite-plugin": "^3.2.0", diff --git a/packages/remix/package.json b/packages/remix/package.json index f9ab77d3f642..31fa4333912f 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -60,7 +60,7 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@remix-run/router": "1.x", - "@sentry/cli": "^2.42.2", + "@sentry/cli": "^2.42.3", "@sentry/core": "9.6.0", "@sentry/node": "9.6.0", "@sentry/opentelemetry": "9.6.0", diff --git a/yarn.lock b/yarn.lock index 61dfa6812ef3..73b52e4425eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6773,6 +6773,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz#a32a4f226e717122b37d9969e8d4d0e14779f720" integrity sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg== +"@sentry/cli-darwin@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.42.3.tgz#34782c2bf889cec99794ec90287fec3836b1a691" + integrity sha512-QGNXZ5c2kbjB3O37ep/uVfqTspHaHkH4kmoMPNJ6j21A1oYyJq5t/AX9JWsueysRwvn6Jc0K0+XyzYZ13z0vsQ== + "@sentry/cli-linux-arm64@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.41.1.tgz#948e8af8290418b1562db3531db08e69e39d74bb" @@ -6783,6 +6788,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz#1c06c83ff21f51ec23acf5be3b1f8c7553bf86b1" integrity sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw== +"@sentry/cli-linux-arm64@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.3.tgz#b722270c81fbdd7703a26451f505f82528d97116" + integrity sha512-tRqWrmphK82G14KKFEouLdV8BdCpGsTuySZ8nzTqhoAtcjpWFaavX2/1UqKzPVYjkxwXc1npO3Q7qfZYW2HvjQ== + "@sentry/cli-linux-arm@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.41.1.tgz#1e5fa971ae8dfb3ea5564c8503b4e635ae6aed8a" @@ -6793,6 +6803,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz#00cadc359ae3c051efb3e63873c033c61dbd1ca1" integrity sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg== +"@sentry/cli-linux-arm@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.3.tgz#81373e1dd017a3d265a49172546063ebbcf69098" + integrity sha512-tipumegAsKy9KLq6Bk87E8FqkKErReaNzdhoHCb081jkxQxpzKN/MQPMl9mA0XeKc4A7OUBM3vjhIk6uNi1R2g== + "@sentry/cli-linux-i686@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.41.1.tgz#3f01aff314f2ad8fd761f3e6e807a5ec09ae4eb4" @@ -6803,6 +6818,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz#3b817b715dd806c20dfbffd539725ad8089c310a" integrity sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ== +"@sentry/cli-linux-i686@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.3.tgz#8342a137ea57df0bb0136a57c3a21eddc1e28991" + integrity sha512-pc4Kc7xTMNbUPiRLQ2UXcj2V2vbVmST0IyhOlVTmY0L3ZxMdiwTq7qgS/IcxI/CaCPyEZWplXnxlsa//mCMuYw== + "@sentry/cli-linux-x64@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.41.1.tgz#30dbf966a4b4c1721ffccd901dfcb6f967db073d" @@ -6813,6 +6833,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz#ddf906bc3071cc79ce6e633eddcb76bb9068e688" integrity sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw== +"@sentry/cli-linux-x64@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.3.tgz#46c4331a46e9c5cee547dcc6c9e039fb8a45f331" + integrity sha512-CZoG2swc38/RruLYtvMJNpcbvzqpcSDl+dUFJ3y6wIvMsE1IQL3zrb4xSh1Acf8Hi+GhlFAtoZpgH1tpWWZ/Zw== + "@sentry/cli-win32-i686@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.41.1.tgz#f88eeb5d2d4ee46c38d8616ae1eb484108ea71c2" @@ -6823,6 +6848,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz#9036085c7c6ce455ad45fda411c55ff39c06eb95" integrity sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw== +"@sentry/cli-win32-i686@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.3.tgz#5fc97729eb895707808a757ec6d557fbbf4a44de" + integrity sha512-geiPcfeuSj23N346xwrxFAuohIivK48NKQQYllVFAADYoYrSawSznVzRyOIheiOte1AIrDkpqzoT/5igl7ANEQ== + "@sentry/cli-win32-x64@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.41.1.tgz#eefd95a2aa184adb464334e265b55a9142070f6f" @@ -6833,6 +6863,11 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz#7d6464b63f32c9f97fff428f246b1f039b402233" integrity sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw== +"@sentry/cli-win32-x64@2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.3.tgz#759f320d60dc1d923d8c8edc44945aca77813f67" + integrity sha512-sG+phJ+3WUMx6gTrUd7UH+q0L6X1YjS57ovMMf3XYyE/WIF8c+uc+vZC/RB3O5l3vTTCXoePqHf8+9ulgp9dkA== + "@sentry/cli@2.41.1": version "2.41.1" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.41.1.tgz#a9467ca3ff4acfcdedec1565c9ff726b93758d29" @@ -6852,7 +6887,7 @@ "@sentry/cli-win32-i686" "2.41.1" "@sentry/cli-win32-x64" "2.41.1" -"@sentry/cli@2.42.2", "@sentry/cli@^2.36.1", "@sentry/cli@^2.42.2": +"@sentry/cli@2.42.2": version "2.42.2" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.42.2.tgz#8173df4d057d600a9ef0cf1e9b42b0c6607b46e4" integrity sha512-spb7S/RUumCGyiSTg8DlrCX4bivCNmU/A1hcfkwuciTFGu8l5CDc2I6jJWWZw8/0enDGxuj5XujgXvU5tr4bxg== @@ -6871,6 +6906,25 @@ "@sentry/cli-win32-i686" "2.42.2" "@sentry/cli-win32-x64" "2.42.2" +"@sentry/cli@^2.36.1", "@sentry/cli@^2.42.3": + version "2.42.3" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.42.3.tgz#9be5e7204f4b066048050ec3887eaa1c8e09afcd" + integrity sha512-SqY+QZGAISb0NWh6Y4HX/RUhUq9VQjN18ZhY3tTtObgxoaRkbngs21gEyemSKf5hv3HsVGuUf9jvxGQEalwrsw== + dependencies: + https-proxy-agent "^5.0.0" + node-fetch "^2.6.7" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + optionalDependencies: + "@sentry/cli-darwin" "2.42.3" + "@sentry/cli-linux-arm" "2.42.3" + "@sentry/cli-linux-arm64" "2.42.3" + "@sentry/cli-linux-i686" "2.42.3" + "@sentry/cli-linux-x64" "2.42.3" + "@sentry/cli-win32-i686" "2.42.3" + "@sentry/cli-win32-x64" "2.42.3" + "@sentry/rollup-plugin@3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@sentry/rollup-plugin/-/rollup-plugin-3.1.2.tgz#d1ed4eeb558e10260bf0e7f292f9ad6baf22a98c" From 77c80e4cf9813135b05ba35c128a8b03cfd24db3 Mon Sep 17 00:00:00 2001 From: Francesco Gringl-Novy Date: Tue, 18 Mar 2025 17:20:00 +0100 Subject: [PATCH 10/13] ref(node): Avoid `provider.register()` which is removed in OTEL v2 (#15722) See https://github.com/open-telemetry/opentelemetry-js/pull/5503 --- packages/node/src/sdk/initOtel.ts | 11 +++++------ packages/opentelemetry/README.md | 8 ++++---- packages/opentelemetry/test/helpers/initOtel.ts | 10 ++++------ packages/vercel-edge/src/sdk.ts | 10 ++++------ 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts index 27423a3d033a..5cd50e2711c1 100644 --- a/packages/node/src/sdk/initOtel.ts +++ b/packages/node/src/sdk/initOtel.ts @@ -1,5 +1,5 @@ import moduleModule from 'module'; -import { DiagLogLevel, diag } from '@opentelemetry/api'; +import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; @@ -127,11 +127,10 @@ export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOp ], }); - // Initialize the provider - provider.register({ - propagator: new SentryPropagator(), - contextManager: new SentryContextManager(), - }); + // Register as globals + trace.setGlobalTracerProvider(provider); + propagation.setGlobalPropagator(new SentryPropagator()); + context.setGlobalContextManager(new SentryContextManager()); return provider; } diff --git a/packages/opentelemetry/README.md b/packages/opentelemetry/README.md index bc4266c85ce0..86a644f5c467 100644 --- a/packages/opentelemetry/README.md +++ b/packages/opentelemetry/README.md @@ -60,6 +60,7 @@ import { setOpenTelemetryContextAsyncContextStrategy, } from '@sentry/opentelemetry'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; +import { context, propagation, trace } from '@opentelemetry/api'; function setupSentry() { Sentry.init({ @@ -77,10 +78,9 @@ function setupSentry() { const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager); // Initialize the provider - provider.register({ - propagator: new SentryPropagator(), - contextManager: new SentryContextManager(), - }); + trace.setGlobalTracerProvider(provider); + propagation.setGlobalPropagator(new SentryPropagator()); + context.setGlobalContextManager(new SentryContextManager()); setOpenTelemetryContextAsyncContextStrategy(); } diff --git a/packages/opentelemetry/test/helpers/initOtel.ts b/packages/opentelemetry/test/helpers/initOtel.ts index 18e7f1e3d867..121ca0181892 100644 --- a/packages/opentelemetry/test/helpers/initOtel.ts +++ b/packages/opentelemetry/test/helpers/initOtel.ts @@ -1,4 +1,4 @@ -import { DiagLogLevel, diag } from '@opentelemetry/api'; +import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; import { Resource } from '@opentelemetry/resources'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; @@ -69,11 +69,9 @@ export function setupOtel(client: TestClientInterface): BasicTracerProvider { // We use a custom context manager to keep context in sync with sentry scope const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager); - // Initialize the provider - provider.register({ - propagator: new SentryPropagator(), - contextManager: new SentryContextManager(), - }); + trace.setGlobalTracerProvider(provider); + propagation.setGlobalPropagator(new SentryPropagator()); + context.setGlobalContextManager(new SentryContextManager()); return provider; } diff --git a/packages/vercel-edge/src/sdk.ts b/packages/vercel-edge/src/sdk.ts index efb3a8dfcd0c..8c3939d26cba 100644 --- a/packages/vercel-edge/src/sdk.ts +++ b/packages/vercel-edge/src/sdk.ts @@ -1,4 +1,4 @@ -import { DiagLogLevel, diag } from '@opentelemetry/api'; +import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { @@ -171,11 +171,9 @@ export function setupOtel(client: VercelEdgeClient): void { const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager); - // Initialize the provider - provider.register({ - propagator: new SentryPropagator(), - contextManager: new SentryContextManager(), - }); + trace.setGlobalTracerProvider(provider); + propagation.setGlobalPropagator(new SentryPropagator()); + context.setGlobalContextManager(new SentryContextManager()); client.traceProvider = provider; } From c24a8eb727f1f8c4867a30781de4770d7ed227d4 Mon Sep 17 00:00:00 2001 From: Sigrid Huemer <32902192+s1gr1d@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:32:47 +0100 Subject: [PATCH 11/13] ci(nuxt): Canary test Nightly Channels of Nuxt (#15631) Adding tests for the [nightly channel](https://nuxt.com/docs/guide/going-further/nightly-release-channel) of Nuxt. Right now, they are failing - will merge this PR once they are not failing anymore. See issue: https://github.com/getsentry/sentry-javascript/issues/15628 This PR adds fixes to the tests should not fail anymore: https://github.com/getsentry/sentry-javascript/pull/15710 --- .github/workflows/canary.yml | 6 ++++++ .../test-applications/nuxt-3-dynamic-import/package.json | 8 +++++--- .../e2e-tests/test-applications/nuxt-3/package.json | 9 +++++++++ .../e2e-tests/test-applications/nuxt-4/package.json | 9 +++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 2218fe19ebd0..53c561e96828 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -108,6 +108,12 @@ jobs: - test-application: 'react-router-6' build-command: 'test:build-canary' label: 'react-router-6 (canary)' + - test-application: 'nuxt-3' + build-command: 'test:build-canary' + label: 'nuxt-3 (canary)' + - test-application: 'nuxt-4' + build-command: 'test:build-canary' + label: 'nuxt-4 (canary)' steps: - name: Check out current commit diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json index 3c383fe962e1..1277c8a76966 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3-dynamic-import/package.json @@ -21,8 +21,10 @@ "@playwright/test": "~1.50.0", "@sentry-internal/test-utils": "link:../../../test-utils" }, - "overrides": { - "nitropack": "~2.9.7", - "ofetch": "^1.4.0" + "pnpm": { + "overrides": { + "nitropack": "~2.9.7", + "ofetch": "^1.4.0" + } } } diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index 0656c5978990..a49a958ff1ee 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -12,6 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", + "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@3x && pnpm add nitropack@npm:nitropack-nightly@latest && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -21,5 +22,13 @@ "devDependencies": { "@playwright/test": "~1.50.0", "@sentry-internal/test-utils": "link:../../../test-utils" + }, + "sentryTest": { + "optionalVariants": [ + { + "build-command": "test:build-canary", + "label": "nuxt-3 (canary)" + } + ] } } diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index 104032962c50..e3c7ec9c0a76 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -12,6 +12,7 @@ "clean": "npx nuxi cleanup", "test": "playwright test", "test:build": "pnpm install && pnpm build", + "test:build-canary": "pnpm add nuxt@npm:nuxt-nightly@latest && pnpm add nitropack@npm:nitropack-nightly@latest && pnpm install --force && pnpm build", "test:assert": "pnpm test" }, "dependencies": { @@ -25,5 +26,13 @@ }, "overrides": { "@vercel/nft": "0.27.4" + }, + "sentryTest": { + "optionalVariants": [ + { + "build-command": "test:build-canary", + "label": "nuxt-4 (canary)" + } + ] } } From 1d767b556f47e154a5ce51a47d98ca0d00201f91 Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Tue, 18 Mar 2025 17:36:31 +0100 Subject: [PATCH 12/13] meta(changelog): Update changelog for 9.7.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71b26ab8fcef..0d0c020277fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,15 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 9.7.0 + +- feat(deps): bump @prisma/instrumentation from 6.4.1 to 6.5.0 ([#15714](https://github.com/getsentry/sentry-javascript/pull/15714)) +- feat(deps): bump @sentry/cli from 2.42.2 to 2.42.3 ([#15711](https://github.com/getsentry/sentry-javascript/pull/15711)) +- fix(nextjs): Re-patch router if it is overriden by Next.js ([#15721](https://github.com/getsentry/sentry-javascript/pull/15721)) +- fix(nuxt): Add Nitro Rollup plugin to inject Sentry server config ([#15710](https://github.com/getsentry/sentry-javascript/pull/15710)) +- chore(deps): Bump rollup to 4.35.0 ([#15651](https://github.com/getsentry/sentry-javascript/pull/15651)) +- chore(deps): Bump rollup to 4.35.0 ([#15651](https://github.com/getsentry/sentry-javascript/pull/15651)) + ## 9.6.0 ### Important Changes From 58e07b9e96ae897dd523d553828f7f81e005fdfa Mon Sep 17 00:00:00 2001 From: s1gr1d Date: Wed, 19 Mar 2025 09:08:56 +0100 Subject: [PATCH 13/13] meta(changelog): Update changelog for 9.6.1 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d0c020277fc..3609b7a2314c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott -## 9.7.0 +## 9.6.1 - feat(deps): bump @prisma/instrumentation from 6.4.1 to 6.5.0 ([#15714](https://github.com/getsentry/sentry-javascript/pull/15714)) - feat(deps): bump @sentry/cli from 2.42.2 to 2.42.3 ([#15711](https://github.com/getsentry/sentry-javascript/pull/15711))