From 80423814b25d3da1a60e61ab7058814f66b3b1da Mon Sep 17 00:00:00 2001 From: Seth Silesky <5115498+silesky@users.noreply.github.com> Date: Wed, 10 Jul 2024 16:30:57 -0500 Subject: [PATCH] add cloning --- .../signals/src/core/client/__tests__/redact.test.ts | 11 +++++++++++ packages/signals/signals/src/core/client/redact.ts | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/signals/signals/src/core/client/__tests__/redact.test.ts b/packages/signals/signals/src/core/client/__tests__/redact.test.ts index 4489ba207..dfda6aea5 100644 --- a/packages/signals/signals/src/core/client/__tests__/redact.test.ts +++ b/packages/signals/signals/src/core/client/__tests__/redact.test.ts @@ -100,4 +100,15 @@ describe(redactSignalData, () => { }) expect(redactSignalData(signal)).toEqual(expected) }) + + it('should not mutate the original signal object', () => { + const originalSignal = createInteractionSignal({ + eventType: 'click', + target: { value: 'sensitiveData' }, + }) + const originalSignalCopy = JSON.parse(JSON.stringify(originalSignal)) + + redactSignalData(originalSignal) + expect(originalSignal).toEqual(originalSignalCopy) + }) }) diff --git a/packages/signals/signals/src/core/client/redact.ts b/packages/signals/signals/src/core/client/redact.ts index a232c1041..05b4dfe71 100644 --- a/packages/signals/signals/src/core/client/redact.ts +++ b/packages/signals/signals/src/core/client/redact.ts @@ -1,6 +1,7 @@ import { Signal } from '../../types' -export const redactSignalData = (signal: Signal): Signal => { +export const redactSignalData = (signalArg: Signal): Signal => { + const signal = structuredClone(signalArg) if (signal.type === 'instrumentation' || signal.type === 'userDefined') { return signal } else if (signal.type === 'interaction') {