Skip to content

Commit 1357ed4

Browse files
committed
wip
1 parent 5190f92 commit 1357ed4

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

.changeset/two-pillows-wonder.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@segment/analytics-signals': patch
3+
---
4+
5+
Redact formData

packages/signals/signals/src/core/client/__tests__/redact.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,12 @@ describe(redactSignalData, () => {
7979
it('should redact the value in the "target" property if the type is "interaction"', () => {
8080
const signal = factories.createInteractionSignal({
8181
eventType: 'change',
82-
target: { value: 'secret' },
82+
target: { value: 'secret', formData: { password: '123' } },
8383
})
8484
const expected = factories.createInteractionSignal({
8585
eventType: 'change',
8686
target: { value: 'XXX' },
87+
formData: { password: 'XXX' },
8788
})
8889
expect(redactSignalData(signal)).toEqual(expected)
8990
})

packages/signals/signals/src/core/client/redact.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ import { Signal } from '@segment/analytics-signals-runtime'
33
export const redactSignalData = (signalArg: Signal): Signal => {
44
const signal = structuredClone(signalArg)
55
if (signal.type === 'interaction') {
6-
if ('target' in signal.data && 'value' in signal.data.target) {
7-
signal.data.target.value = redactJsonValues(signal.data.target.value)
6+
if ('target' in signal.data) {
7+
if ('value' in signal.data.target) {
8+
signal.data.target.value = redactJsonValues(signal.data.target.value)
9+
}
10+
if ('formData' in signal.data.target) {
11+
signal.data.target.formData = redactJsonValues(
12+
signal.data.target.formData
13+
)
14+
}
815
}
916
} else if (signal.type === 'network') {
1017
signal.data = redactJsonValues(signal.data, 2)

packages/signals/signals/src/core/signal-generators/dom-gen.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ interface ParsedElementBase {
6060
nodeName: string
6161
tagName: string
6262
title: string
63-
type: string
64-
value: string
63+
type?: string
64+
value?: string
6565
textContent?: string
6666
innerText?: string
6767
}
@@ -88,6 +88,8 @@ interface ParsedMediaElement extends ParsedElementBase {
8888

8989
interface ParsedHTMLFormElement extends ParsedElementBase {
9090
formData: Record<string, string>
91+
innerText: never
92+
textContent: never
9193
}
9294

9395
type AnyParsedElement =
@@ -147,6 +149,8 @@ const parseElement = (el: HTMLElement): AnyParsedElement => {
147149
} else if (el instanceof HTMLFormElement) {
148150
return {
149151
...base,
152+
innerText: undefined,
153+
textContent: undefined,
150154
formData: parseFormData(new FormData(el)),
151155
}
152156
}

0 commit comments

Comments
 (0)