/** * Internal dependencies */ import type { Maybe } from '@neliosr/types'; /** * Internal dependencies */ import type { Settings } from '../../../types'; export const getSettings = (): Maybe< Required< Settings > > => { const win = window as unknown; if ( ! hasSettings( win ) ) { return; } //end if const settings = win.neliosrSettings; const recordingNoiseControl = { enabled: true, mutationThrottleMs: 180, maxBufferedMutations: 200, ignoreSelectors: [], ignoreClasses: [], ignoreStyleProperties: [], keepSelectors: [], ...settings.recordingNoiseControl, }; return { api: { mode: 'native', url: '' }, isStagingSite: false, monthlyQuota: 0, site: '', trackShortSessions: false, recordingsScope: [], excludedSelectors: [], samplingRate: { mode: 'unlimited' }, gdprCookie: { name: '', value: '' }, ...settings, recordingNoiseControl, }; }; // ======== // INTERNAL // ======== const hasSettings = ( win: unknown ): win is { neliosrSettings: Partial< Settings > } => !! win && 'object' === typeof win && 'neliosrSettings' in win;