From e3fe1889554fa4408b3d6b56fb1dbb60960ae842 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 2 May 2023 22:08:56 +0200 Subject: [PATCH 1/5] fix(utils): Normalize `undefined` to `undefined` instead of `"undefined"` --- packages/utils/src/normalize.ts | 11 +++++------ packages/utils/test/normalize.test.ts | 16 +++++++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/packages/utils/src/normalize.ts b/packages/utils/src/normalize.ts index 4b2dd611f8e2..6cee9c14c989 100644 --- a/packages/utils/src/normalize.ts +++ b/packages/utils/src/normalize.ts @@ -79,7 +79,11 @@ function visit( const [memoize, unmemoize] = memo; // Get the simple cases out of the way first - if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) { + if ( + value === undefined || + value === null || + (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value)) + ) { return value as Primitive; } @@ -221,11 +225,6 @@ function stringifyValue( return '[NaN]'; } - // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own) - if (value === void 0) { - return '[undefined]'; - } - if (typeof value === 'function') { return `[Function: ${getFunctionName(value)}]`; } diff --git a/packages/utils/test/normalize.test.ts b/packages/utils/test/normalize.test.ts index 008bde5dfebe..6e0037ce4a64 100644 --- a/packages/utils/test/normalize.test.ts +++ b/packages/utils/test/normalize.test.ts @@ -14,6 +14,7 @@ describe('normalize()', () => { expect(normalize(42)).toEqual(42); expect(normalize(true)).toEqual(true); expect(normalize(null)).toEqual(null); + expect(normalize(undefined)).toBeUndefined(); }); test('return same object or arrays for referenced inputs', () => { @@ -344,7 +345,6 @@ describe('normalize()', () => { describe('changes unserializeable/global values/classes to their respective string representations', () => { test('primitive values', () => { - expect(normalize(undefined)).toEqual('[undefined]'); expect(normalize(NaN)).toEqual('[NaN]'); expect(normalize(Symbol('dogs'))).toEqual('[Symbol(dogs)]'); // `BigInt` doesn't exist in Node 8 @@ -366,28 +366,26 @@ describe('normalize()', () => { }); test('primitive values in objects/arrays', () => { - expect(normalize(['foo', 42, undefined, NaN])).toEqual(['foo', 42, '[undefined]', '[NaN]']); + expect(normalize(['foo', 42, NaN])).toEqual(['foo', 42, '[NaN]']); expect( normalize({ foo: 42, - bar: undefined, - baz: NaN, + bar: NaN, }), ).toEqual({ foo: 42, - bar: '[undefined]', - baz: '[NaN]', + bar: '[NaN]', }); }); test('primitive values in deep objects/arrays', () => { - expect(normalize(['foo', 42, [[undefined]], [NaN]])).toEqual(['foo', 42, [['[undefined]']], ['[NaN]']]); + expect(normalize(['foo', 42, [[null]], [NaN]])).toEqual(['foo', 42, [[null]], ['[NaN]']]); expect( normalize({ foo: 42, bar: { baz: { - quz: undefined, + quz: null, }, }, wat: { @@ -398,7 +396,7 @@ describe('normalize()', () => { foo: 42, bar: { baz: { - quz: '[undefined]', + quz: null, }, }, wat: { From 05a689d8370d981223645fded78bd046342ce999 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 09:30:40 +0200 Subject: [PATCH 2/5] bundlesize --- packages/utils/src/normalize.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/utils/src/normalize.ts b/packages/utils/src/normalize.ts index 6cee9c14c989..56f729969fc9 100644 --- a/packages/utils/src/normalize.ts +++ b/packages/utils/src/normalize.ts @@ -80,8 +80,7 @@ function visit( // Get the simple cases out of the way first if ( - value === undefined || - value === null || + value == null || // this matches null and undefined -> eqeq not eqeqeq (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value)) ) { return value as Primitive; From e04cd0854816a8cbb3fa16437304df13ae32f1ab Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 09:32:51 +0200 Subject: [PATCH 3/5] Fix tests? --- .../suites/public-api/setContext/multiple_contexts/test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/browser-integration-tests/suites/public-api/setContext/multiple_contexts/test.ts b/packages/browser-integration-tests/suites/public-api/setContext/multiple_contexts/test.ts index d1e85f49cf27..29ab95edb776 100644 --- a/packages/browser-integration-tests/suites/public-api/setContext/multiple_contexts/test.ts +++ b/packages/browser-integration-tests/suites/public-api/setContext/multiple_contexts/test.ts @@ -16,7 +16,6 @@ sentryTest('should record multiple contexts', async ({ getLocalTestPath, page }) baz: { qux: 'quux' }, }, context_2: { 1: 'foo', bar: false }, - context_4: '[undefined]', context_5: '[NaN]', context_6: 3.141592653589793, }); From 34081b2f9bd74286715693c9d6a9dc1082028dff Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 09:35:20 +0200 Subject: [PATCH 4/5] Fix more tests --- .../test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/replay/test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts b/packages/replay/test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts index 436aa79162a1..45483ebab5b4 100644 --- a/packages/replay/test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts +++ b/packages/replay/test/unit/coreHandlers/util/addBreadcrumbEvent.test.ts @@ -39,7 +39,7 @@ describe('Unit | coreHandlers | util | addBreadcrumbEvent', function () { category: 'console', message: 'Test message', thisIsNull: null, - thisIsUndefined: '[undefined]', + thisIsUndefined: undefined, circular: '[Circular ~]', timestamp: BASE_TIMESTAMP / 1000, }, From 4c2684299bbb549e0c97ebef943170dc9e32e09d Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Wed, 3 May 2023 14:49:24 +0200 Subject: [PATCH 5/5] keep --- packages/utils/test/normalize.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/test/normalize.test.ts b/packages/utils/test/normalize.test.ts index 29145b988475..c1c90a7ec07d 100644 --- a/packages/utils/test/normalize.test.ts +++ b/packages/utils/test/normalize.test.ts @@ -438,7 +438,7 @@ describe('normalize()', () => { }); test('primitive values in deep objects/arrays', () => { - expect(normalize(['foo', 42, [[null]], [NaN]])).toEqual(['foo', 42, [[null]], ['[NaN]']]); + expect(normalize(['foo', 42, [[undefined]], [NaN]])).toEqual(['foo', 42, [[undefined]], ['[NaN]']]); expect( normalize({ foo: 42,