UNPKG

@sentry/browser

Version:
108 lines (104 loc) 2.85 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const browser = require('@sentry/core/browser'); const WINDOW = browser.GLOBAL_OBJ; let ignoreOnError = 0; function shouldIgnoreOnError() { return ignoreOnError > 0; } function ignoreNextOnError() { ignoreOnError++; setTimeout(() => { ignoreOnError--; }); } function wrap(fn, options = {}) { function isFunction(fn2) { return typeof fn2 === "function"; } if (!isFunction(fn)) { return fn; } try { const wrapper = fn.__sentry_wrapped__; if (wrapper) { if (typeof wrapper === "function") { return wrapper; } else { return fn; } } if (browser.getOriginalFunction(fn)) { return fn; } } catch { return fn; } const sentryWrapped = function(...args) { browser.GLOBAL_OBJ._sentryWrappedDepth = (browser.GLOBAL_OBJ._sentryWrappedDepth || 0) + 1; try { const wrappedArguments = args.map((arg) => wrap(arg, options)); return fn.apply(this, wrappedArguments); } catch (ex) { ignoreNextOnError(); browser.withScope((scope) => { scope.addEventProcessor((event) => { if (options.mechanism) { browser.addExceptionTypeValue(event, void 0, void 0); browser.addExceptionMechanism(event, options.mechanism); } event.extra = { ...event.extra, arguments: args }; return event; }); browser.captureException(ex); }); throw ex; } finally { browser.GLOBAL_OBJ._sentryWrappedDepth = (browser.GLOBAL_OBJ._sentryWrappedDepth || 0) - 1; } }; try { for (const property in fn) { if (Object.prototype.hasOwnProperty.call(fn, property)) { sentryWrapped[property] = fn[property]; } } } catch { } browser.markFunctionWrapped(sentryWrapped, fn); browser.addNonEnumerableProperty(fn, "__sentry_wrapped__", sentryWrapped); try { const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, "name"); if (descriptor.configurable) { Object.defineProperty(sentryWrapped, "name", { get() { return fn.name; } }); } } catch { } return sentryWrapped; } function getHttpRequestData() { const url = browser.getLocationHref(); const { referrer } = WINDOW.document || {}; const { userAgent } = WINDOW.navigator || {}; const headers = { ...referrer && { Referer: referrer }, ...userAgent && { "User-Agent": userAgent } }; const request = { url, headers }; return request; } exports.WINDOW = WINDOW; exports.getHttpRequestData = getHttpRequestData; exports.ignoreNextOnError = ignoreNextOnError; exports.shouldIgnoreOnError = shouldIgnoreOnError; exports.wrap = wrap; //# sourceMappingURL=helpers.js.map