import { type MaskingOptions, type SessionRecorderConfigs } from '../types'; import { DEFAULT_MASKING_CONFIG } from './defaults'; import { isValidArray, isValidBoolean, isValidFunction } from './validators'; import { SessionRecorderSdk } from '@multiplayer-app/session-recorder-common'; const { mask, sensitiveFields, sensitiveHeaders } = SessionRecorderSdk; export const getMaskingConfig = ( masking?: MaskingOptions ): SessionRecorderConfigs['masking'] => { const baseMasking = DEFAULT_MASKING_CONFIG; if (typeof masking !== 'object') { return baseMasking; } const maskHeadersList = isValidArray( masking.maskHeadersList, sensitiveHeaders ); const maskBodyFieldsList = isValidArray( masking.maskBodyFieldsList, sensitiveFields ); return { maskHeadersList, maskBodyFieldsList, headersToInclude: isValidArray( masking.headersToInclude, baseMasking.headersToInclude ), headersToExclude: isValidArray( masking.headersToExclude, baseMasking.headersToExclude ), isContentMaskingEnabled: isValidBoolean( masking.isContentMaskingEnabled, baseMasking.isContentMaskingEnabled ), maskBody: isValidFunction(masking.maskBody, mask(maskBodyFieldsList)), maskHeaders: isValidFunction(masking.maskHeaders, mask(maskHeadersList)), // Screen masking options maskTextInputs: isValidBoolean( masking.maskTextInputs, baseMasking.maskTextInputs ), maskImages: isValidBoolean(masking.maskImages, baseMasking.maskImages), maskButtons: isValidBoolean(masking.maskButtons, baseMasking.maskButtons), maskLabels: isValidBoolean(masking.maskLabels, baseMasking.maskLabels), maskWebViews: isValidBoolean( masking.maskWebViews, baseMasking.maskWebViews ), maskSandboxedViews: isValidBoolean( masking.maskSandboxedViews, baseMasking.maskSandboxedViews ), }; };