UNPKG

@thoughtspot/visual-embed-sdk

Version:
68 lines 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resetGlobalReportingObserver = exports.getGlobalReportingObserver = exports.registerReportingObserver = void 0; const embedConfig_1 = require("../embed/embedConfig"); const logger_1 = require("./logger"); const errors_1 = require("../errors"); var ReportType; (function (ReportType) { ReportType["CSP_VIOLATION"] = "csp-violation"; ReportType["DEPRECATION"] = "deprecation"; ReportType["INTERVENTION"] = "intervention"; })(ReportType || (ReportType = {})); let globalObserver = null; /** * Register a global ReportingObserver to capture all unhandled errors * @param overrideExisting boolean to override existing observer * @returns ReportingObserver | null */ function registerReportingObserver(overrideExisting = false) { if (!(window.ReportingObserver)) { logger_1.logger.warn(errors_1.ERROR_MESSAGE.MISSING_REPORTING_OBSERVER); return null; } if (overrideExisting) { resetGlobalReportingObserver(); } if (globalObserver) { return globalObserver; } const embedConfig = (0, embedConfig_1.getEmbedConfig)(); globalObserver = new ReportingObserver((reports) => { reports.forEach((report) => { const { type, url, body } = report; const reportBody = body; const isThoughtSpotHost = url && url.startsWith(embedConfig.thoughtSpotHost); const isFrameHostError = type === ReportType.CSP_VIOLATION && reportBody.effectiveDirective === 'frame-ancestors'; if (isThoughtSpotHost && isFrameHostError) { if (!embedConfig.suppressErrorAlerts) { alert(errors_1.ERROR_MESSAGE.CSP_VIOLATION_ALERT); } logger_1.logger.error(errors_1.ERROR_MESSAGE.CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE); } }); }, { buffered: true }); globalObserver.observe(); return globalObserver; } exports.registerReportingObserver = registerReportingObserver; /** * Get the global ReportingObserver * @returns - ReportingObserver | null */ function getGlobalReportingObserver() { return globalObserver; } exports.getGlobalReportingObserver = getGlobalReportingObserver; /** * Resets the global ReportingObserver */ function resetGlobalReportingObserver() { if (globalObserver) globalObserver.disconnect(); globalObserver = null; } exports.resetGlobalReportingObserver = resetGlobalReportingObserver; //# sourceMappingURL=reporting.js.map