UNPKG

@sentry/browser

Version:
86 lines (82 loc) 2.9 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const browser = require('@sentry/core/browser'); const eventbuilder = require('./eventbuilder.js'); const helpers = require('./helpers.js'); class BrowserClient extends browser.Client { /** * Creates a new Browser SDK instance. * * @param options Configuration options for this SDK. */ constructor(options) { const opts = applyDefaultOptions(options); const sdkSource = helpers.WINDOW.SENTRY_SDK_SOURCE || browser.getSDKSource(); browser.applySdkMetadata(opts, "browser", ["browser"], sdkSource); if (opts._metadata?.sdk) { opts._metadata.sdk.settings = { infer_ip: opts.sendDefaultPii ? "auto" : "never", // purposefully allowing already passed settings to override the default ...opts._metadata.sdk.settings }; } super(opts); const { sendDefaultPii, sendClientReports, enableLogs, _experiments, enableMetrics: enableMetricsOption } = this._options; const enableMetrics = enableMetricsOption ?? _experiments?.enableMetrics ?? true; if (helpers.WINDOW.document && (sendClientReports || enableLogs || enableMetrics)) { helpers.WINDOW.document.addEventListener("visibilitychange", () => { if (helpers.WINDOW.document.visibilityState === "hidden") { if (sendClientReports) { this._flushOutcomes(); } if (enableLogs) { browser._INTERNAL_flushLogsBuffer(this); } if (enableMetrics) { browser._INTERNAL_flushMetricsBuffer(this); } } }); } if (sendDefaultPii) { this.on("beforeSendSession", browser.addAutoIpAddressToSession); } } /** * @inheritDoc */ eventFromException(exception, hint) { return eventbuilder.eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace); } /** * @inheritDoc */ eventFromMessage(message, level = "info", hint) { return eventbuilder.eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace); } /** * @inheritDoc */ _prepareEvent(event, hint, currentScope, isolationScope) { event.platform = event.platform || "javascript"; return super._prepareEvent(event, hint, currentScope, isolationScope); } } function applyDefaultOptions(optionsArg) { return { release: typeof __SENTRY_RELEASE__ === "string" ? __SENTRY_RELEASE__ : helpers.WINDOW.SENTRY_RELEASE?.id, // This supports the variable that sentry-webpack-plugin injects sendClientReports: true, // We default this to true, as it is the safer scenario parentSpanIsAlwaysRootSpan: true, ...optionsArg }; } exports.BrowserClient = BrowserClient; exports.applyDefaultOptions = applyDefaultOptions; //# sourceMappingURL=client.js.map