UNPKG

@grafana/faro-web-sdk

Version:

Faro instrumentations, metas, transports for web.

44 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerOnunhandledrejection = registerOnunhandledrejection; exports.__resetOnunhandledrejectionForTests = __resetOnunhandledrejectionForTests; const faro_core_1 = require("@grafana/faro-core"); const const_1 = require("./const"); const getErrorDetails_1 = require("./getErrorDetails"); // Store handlers for cleanup in tests const registeredHandlers = []; function registerOnunhandledrejection(api) { const handler = (evt) => { var _a, _b; let error = evt; if (error.reason) { error = evt.reason; } else if ((_a = evt.detail) === null || _a === void 0 ? void 0 : _a.reason) { error = (_b = evt.detail) === null || _b === void 0 ? void 0 : _b.reason; } let value; let type; let stackFrames = []; if ((0, faro_core_1.isPrimitive)(error)) { value = `${const_1.primitiveUnhandledValue} ${String(error)}`; type = const_1.primitiveUnhandledType; } else { [value, type, stackFrames] = (0, getErrorDetails_1.getErrorDetails)(error); } if (value) { api.pushError(new Error(value), { type, stackFrames }); } }; window.addEventListener('unhandledrejection', handler); registeredHandlers.push(handler); } // Test-only utility to reset state between tests function __resetOnunhandledrejectionForTests() { registeredHandlers.forEach((handler) => { window.removeEventListener('unhandledrejection', handler); }); registeredHandlers.length = 0; } //# sourceMappingURL=registerOnunhandledrejection.js.map