File: //home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/browser/esm/integrations/dedupe.js.map
{"version":3,"file":"dedupe.js","sources":["../../../../src/integrations/dedupe.ts"],"sourcesContent":["import type { Event, Exception, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n public constructor() {\n this.name = Dedupe.id;\n }\n\n /** @inheritDoc */\n public setupOnce(_addGlobaleventProcessor: unknown, _getCurrentHub: unknown): void {\n // noop\n }\n\n /**\n * @inheritDoc\n */\n public processEvent(currentEvent: Event): Event | null {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, this._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (this._previousEvent = currentEvent);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-expect-error Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n"],"names":[],"mappings":"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"}