From c6a5aab2744851affc34080dad98ba16e08cc867 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 3 Dec 2024 16:17:45 +0100 Subject: [PATCH 1/2] ref(browser): Reduce bundle size of GlobalHandlers integration --- .../src/integrations/globalhandlers.ts | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index 1f0d0a4b35c1..3a43f73545ad 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -1,4 +1,4 @@ -import type { Client, Event, IntegrationFn, Primitive, StackParser } from '@sentry/core'; +import type { Client, Event, IntegrationFn, Primitive, StackFrame, StackParser } from '@sentry/core'; import { UNKNOWN_FUNCTION, addGlobalErrorInstrumentationHandler, @@ -155,24 +155,22 @@ function _eventFromRejectionWithPrimitive(reason: Primitive): Event { // eslint-disable-next-line @typescript-eslint/no-explicit-any function _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event { - // event.exception - const e = (event.exception = event.exception || {}); - // event.exception.values - const ev = (e.values = e.values || []); - // event.exception.values[0] - const ev0 = (ev[0] = ev[0] || {}); - // event.exception.values[0].stacktrace - const ev0s = (ev0.stacktrace = ev0.stacktrace || {}); - // event.exception.values[0].stacktrace.frames - const ev0sf = (ev0s.frames = ev0s.frames || []); + const frames: StackFrame[] = []; + try { + // @ts-expect-error - this is fine and done to reduce bundle size + // we're catching the error if any of the properties in the chain is undefined + frames.push(event.exception.values[0].stacktrace.frames); + } catch { + // ignored + } const colno = isNaN(parseInt(column, 10)) ? undefined : column; const lineno = isNaN(parseInt(line, 10)) ? undefined : line; const filename = isString(url) && url.length > 0 ? url : getLocationHref(); // event.exception.values[0].stacktrace.frames - if (ev0sf.length === 0) { - ev0sf.push({ + if (frames.length === 0) { + frames.push({ colno, filename, function: UNKNOWN_FUNCTION, From 722bb75d9129e06c03bf8c4401aece3bb052417b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 3 Dec 2024 16:21:36 +0100 Subject: [PATCH 2/2] make frames hold the reference to the event's frames --- packages/browser/src/integrations/globalhandlers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index 3a43f73545ad..7fe1c5eeb81a 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -155,11 +155,11 @@ function _eventFromRejectionWithPrimitive(reason: Primitive): Event { // eslint-disable-next-line @typescript-eslint/no-explicit-any function _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event { - const frames: StackFrame[] = []; + let frames: StackFrame[] = []; try { // @ts-expect-error - this is fine and done to reduce bundle size // we're catching the error if any of the properties in the chain is undefined - frames.push(event.exception.values[0].stacktrace.frames); + frames = event.exception.values[0].stacktrace.frames; } catch { // ignored }