{"version":3,"file":"rewriteframes.js","sources":["../../../src/rewriteframes.ts"],"sourcesContent":["import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn, StackFrame, Stacktrace } from '@sentry/types';\nimport { basename, relative } from '@sentry/utils';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n root?: string;\n prefix?: string;\n iteratee?: StackFrameIteratee;\n}\n\nconst _rewriteFramesIntegration = ((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const iteratee: StackFrameIteratee =\n options.iteratee ||\n ((frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n return frame;\n });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch (_oO) {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace && stacktrace.frames && stacktrace.frames.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const rewriteFramesIntegration = defineIntegration(_rewriteFramesIntegration);\n\n/**\n * Rewrite event frames paths.\n * @deprecated Use `rewriteFramesIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const RewriteFrames = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n rewriteFramesIntegration,\n) as IntegrationClass Event }> & {\n new (options?: { root?: string; prefix?: string; iteratee?: StackFrameIteratee }): Integration;\n};\n"],"names":[],"mappings":"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"}