Object.defineProperty(exports, '__esModule', { value: true }); const core = require('@sentry/core'); const utils = require('@sentry/utils'); const WINDOW = utils.GLOBAL_OBJ ; const DEFAULT_LINES_OF_CONTEXT = 7; const INTEGRATION_NAME = 'ContextLines'; const _contextLinesIntegration = ((options = {}) => { const contextLines = options.frameContextLines != null ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT; return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event) { return addSourceContext(event, contextLines); }, }; }) ; const contextLinesIntegration = core.defineIntegration(_contextLinesIntegration); /** * Collects source context lines around the lines of stackframes pointing to JS embedded in * the current page's HTML. * * This integration DOES NOT work for stack frames pointing to JS files that are loaded by the browser. * For frames pointing to files, context lines are added during ingestion and symbolication * by attempting to download the JS files to the Sentry backend. * * Use this integration if you have inline JS code in HTML pages that can't be accessed * by our backend (e.g. due to a login-protected page). * * @deprecated Use `contextLinesIntegration()` instead. */ // eslint-disable-next-line deprecation/deprecation const ContextLines = core.convertIntegrationFnToClass(INTEGRATION_NAME, contextLinesIntegration) ; /** * Processes an event and adds context lines. */ function addSourceContext(event, contextLines) { const doc = WINDOW.document; const htmlFilename = WINDOW.location && utils.stripUrlQueryAndFragment(WINDOW.location.href); if (!doc || !htmlFilename) { return event; } const exceptions = event.exception && event.exception.values; if (!exceptions || !exceptions.length) { return event; } const html = doc.documentElement.innerHTML; if (!html) { return event; } const htmlLines = ['', '', ...html.split('\n'), '']; exceptions.forEach(exception => { const stacktrace = exception.stacktrace; if (stacktrace && stacktrace.frames) { stacktrace.frames = stacktrace.frames.map(frame => applySourceContextToFrame(frame, htmlLines, htmlFilename, contextLines), ); } }); return event; } /** * Only exported for testing */ function applySourceContextToFrame( frame, htmlLines, htmlFilename, linesOfContext, ) { if (frame.filename !== htmlFilename || !frame.lineno || !htmlLines.length) { return frame; } utils.addContextToFrame(htmlLines, frame, linesOfContext); return frame; } exports.ContextLines = ContextLines; exports.applySourceContextToFrame = applySourceContextToFrame; exports.contextLinesIntegration = contextLinesIntegration; //# sourceMappingURL=contextlines.js.map