From c8bd105c6ce71b750d5cfb40941ad85bbfa498ad Mon Sep 17 00:00:00 2001 From: sylenien Date: Mon, 12 Sep 2022 15:00:09 +0200 Subject: [PATCH] change(tracker): change attribute deprecation --- tracker/tracker/src/main/app/sanitizer.ts | 31 ++++++++++------------- tracker/tracker/src/main/utils.ts | 11 +++++++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/tracker/tracker/src/main/app/sanitizer.ts b/tracker/tracker/src/main/app/sanitizer.ts index 15997b12c..8beed8429 100644 --- a/tracker/tracker/src/main/app/sanitizer.ts +++ b/tracker/tracker/src/main/app/sanitizer.ts @@ -26,40 +26,37 @@ export default class Sanitizer { obscureTextEmails: true, obscureTextNumbers: false, customCallback: false, - domSanitizer: () => [false, false], + domSanitizer: () => SanitizeLevel.Plain, }, options, ) } handleNode(id: number, parentID: number, node: Node) { - if (this.options.customCallback) { - if (this.masked.has(parentID)) { - this.masked.add(id) - } else if (this.hiddenContainers.has(parentID)) { - this.hiddenContainers.add(id) - } else { - const sanitizeLevel = this.options.domSanitizer(node) - if (sanitizeLevel > 0) { - const addMasked = - sanitizeLevel === SanitizeLevel.Hidden ? this.hiddenContainers.add : this.masked.add - addMasked(id) - } - } - } if ( this.masked.has(parentID) || - (isElementNode(node) && hasOpenreplayAttribute(node, 'masked')) + (isElementNode(node) && + (hasOpenreplayAttribute(node, 'masked') || hasOpenreplayAttribute(node, 'obscured'))) ) { this.masked.add(id) } if ( this.hiddenContainers.has(parentID) || (isElementNode(node) && - (hasOpenreplayAttribute(node, 'htmlmasked') || hasOpenreplayAttribute(node, 'hidden'))) + (hasOpenreplayAttribute(node, 'htmlmasked') || hasOpenreplayAttribute(node, 'hidden-html'))) ) { this.hiddenContainers.add(id) } + + if (this.options.customCallback) { + const sanitizeLevel = this.options.domSanitizer(node) + if (sanitizeLevel > 0) { + const maskedSet = + sanitizeLevel === SanitizeLevel.Hidden ? this.hiddenContainers : this.masked + + maskedSet.add(id) + } + } } sanitize(id: number, data: string): string { diff --git a/tracker/tracker/src/main/utils.ts b/tracker/tracker/src/main/utils.ts index d9732cac4..8af650924 100644 --- a/tracker/tracker/src/main/utils.ts +++ b/tracker/tracker/src/main/utils.ts @@ -52,9 +52,18 @@ export function getLabelAttribute(e: Element): string | null { } export function hasOpenreplayAttribute(e: Element, name: string): boolean { - const deprecatedNames = ['htmlmasked'] + const deprecatedNames = { htmlmasked: 'hidden-html', masked: 'obscured' } const newName = `data-openreplay-${name}` if (e.hasAttribute(newName)) { + // @ts-ignore + if (deprecatedNames[name]) { + deprecationWarn( + `"${newName}" attribute`, + // @ts-ignore + `"${deprecatedNames[name] as string}" attribute`, + '/installation/sanitize-data', + ) + } return true } const oldName = `data-asayer-${name}`