overcentric
Version:
A lightweight, privacy-focused toolkit for modern SaaS web applications
38 lines (37 loc) • 1.4 kB
JavaScript
let loadPromise = null;
export async function loadErrorCapture() {
try {
if (!loadPromise) {
loadPromise = Promise.resolve({
initErrorCapture: (trackEvent) => {
const existingErrorHandler = window.onerror;
window.onerror = (message, url, line, column, error) => {
trackEvent('$error', {
message,
url,
line,
column,
error: error === null || error === void 0 ? void 0 : error.toString()
});
if (existingErrorHandler && typeof existingErrorHandler === 'function') {
return existingErrorHandler(message, url, line, column, error);
}
return false;
};
}
}).catch(error => {
loadPromise = null;
throw new Error(`Failed to load error capture module: ${error.message}`);
});
}
return loadPromise;
}
catch (error) {
loadPromise = null;
throw error;
}
}
export async function initErrorCaptureFeature(trackEvent) {
const { initErrorCapture } = await loadErrorCapture();
initErrorCapture(trackEvent);
}