123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- Object.defineProperty(exports, '__esModule', { value: true });
- const utils = require('@sentry/utils');
- /** Keys are source filename/url, values are metadata objects. */
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- const filenameMetadataMap = new Map();
- /** Set of stack strings that have already been parsed. */
- const parsedStacks = new Set();
- function ensureMetadataStacksAreParsed(parser) {
- if (!utils.GLOBAL_OBJ._sentryModuleMetadata) {
- return;
- }
- for (const stack of Object.keys(utils.GLOBAL_OBJ._sentryModuleMetadata)) {
- const metadata = utils.GLOBAL_OBJ._sentryModuleMetadata[stack];
- if (parsedStacks.has(stack)) {
- continue;
- }
- // Ensure this stack doesn't get parsed again
- parsedStacks.add(stack);
- const frames = parser(stack);
- // Go through the frames starting from the top of the stack and find the first one with a filename
- for (const frame of frames.reverse()) {
- if (frame.filename) {
- // Save the metadata for this filename
- filenameMetadataMap.set(frame.filename, metadata);
- break;
- }
- }
- }
- }
- /**
- * Retrieve metadata for a specific JavaScript file URL.
- *
- * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.
- */
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- function getMetadataForUrl(parser, filename) {
- ensureMetadataStacksAreParsed(parser);
- return filenameMetadataMap.get(filename);
- }
- /**
- * Adds metadata to stack frames.
- *
- * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.
- */
- function addMetadataToStackFrames(parser, event) {
- try {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- event.exception.values.forEach(exception => {
- if (!exception.stacktrace) {
- return;
- }
- for (const frame of exception.stacktrace.frames || []) {
- if (!frame.filename) {
- continue;
- }
- const metadata = getMetadataForUrl(parser, frame.filename);
- if (metadata) {
- frame.module_metadata = metadata;
- }
- }
- });
- } catch (_) {
- // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.
- }
- }
- /**
- * Strips metadata from stack frames.
- */
- function stripMetadataFromStackFrames(event) {
- try {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- event.exception.values.forEach(exception => {
- if (!exception.stacktrace) {
- return;
- }
- for (const frame of exception.stacktrace.frames || []) {
- delete frame.module_metadata;
- }
- });
- } catch (_) {
- // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.
- }
- }
- exports.addMetadataToStackFrames = addMetadataToStackFrames;
- exports.getMetadataForUrl = getMetadataForUrl;
- exports.stripMetadataFromStackFrames = stripMetadataFromStackFrames;
- //# sourceMappingURL=metadata.js.map
|