diff --git a/packages/browser/src/eventbuilder.ts b/packages/browser/src/eventbuilder.ts index 2324fcd8b296..d089a5b670e0 100644 --- a/packages/browser/src/eventbuilder.ts +++ b/packages/browser/src/eventbuilder.ts @@ -1,3 +1,4 @@ +import { getCurrentHub } from '@sentry/core'; import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types'; import { addExceptionMechanism, @@ -45,6 +46,10 @@ export function eventFromPlainObject( syntheticException?: Error, isUnhandledRejection?: boolean, ): Event { + const hub = getCurrentHub(); + const client = hub.getClient(); + const normalizeDepth = client && client.getOptions().normalizeDepth; + const event: Event = { exception: { values: [ @@ -57,7 +62,7 @@ export function eventFromPlainObject( ], }, extra: { - __serialized__: normalizeToSize(exception), + __serialized__: normalizeToSize(exception, normalizeDepth), }, }; diff --git a/packages/browser/test/unit/eventbuilder.test.ts b/packages/browser/test/unit/eventbuilder.test.ts new file mode 100644 index 000000000000..62a70a4b2740 --- /dev/null +++ b/packages/browser/test/unit/eventbuilder.test.ts @@ -0,0 +1,64 @@ +import { Client } from '@sentry/types'; + +import { defaultStackParser } from '../../src'; +import { eventFromPlainObject } from '../../src/eventbuilder'; + +jest.mock('@sentry/core', () => { + const original = jest.requireActual('@sentry/core'); + return { + ...original, + getCurrentHub(): { + getClient(): Client; + } { + return { + getClient(): any { + return { + getOptions(): any { + return { normalizeDepth: 6 }; + }, + }; + }, + }; + }, + }; +}); + +afterEach(() => { + jest.resetAllMocks(); +}); + +describe('eventFromPlainObject', () => { + it('should use normalizeDepth from init options', () => { + const deepObject = { + a: { + b: { + c: { + d: { + e: { + f: { + g: 'foo', + }, + }, + }, + }, + }, + }, + }; + + const event = eventFromPlainObject(defaultStackParser, deepObject); + + expect(event?.extra?.__serialized__).toEqual({ + a: { + b: { + c: { + d: { + e: { + f: '[Object]', + }, + }, + }, + }, + }, + }); + }); +});