forked from cerc-io/snowballtools-base
35 lines
955 B
TypeScript
35 lines
955 B
TypeScript
import Bugsnag from '@bugsnag/js';
|
|
import BugsnagPluginReact from '@bugsnag/plugin-react';
|
|
import BugsnagPerformance from '@bugsnag/browser-performance';
|
|
import React from 'react';
|
|
|
|
const bugsnagApiKey = import.meta.env.VITE_BUGSNAG_API_KEY;
|
|
|
|
if (bugsnagApiKey) {
|
|
Bugsnag.start({
|
|
apiKey: bugsnagApiKey,
|
|
plugins: [new BugsnagPluginReact()],
|
|
});
|
|
BugsnagPerformance.start({ apiKey: bugsnagApiKey });
|
|
}
|
|
|
|
export const errorLoggingEnabled = !!bugsnagApiKey;
|
|
|
|
export const LogErrorBoundary = bugsnagApiKey
|
|
? Bugsnag.getPlugin('react')!.createErrorBoundary(React)
|
|
: ({ children }: any) => children;
|
|
|
|
export function logError(error: Error) {
|
|
let errors: any[] = [error];
|
|
let safety = 0;
|
|
while (errors[errors.length - 1].cause && safety < 10) {
|
|
errors.push('::caused by::', errors[errors.length - 1].cause);
|
|
safety += 1;
|
|
}
|
|
console.error(...errors);
|
|
|
|
if (import.meta.env.VITE_BUGSNAG_API_KEY) {
|
|
Bugsnag.notify(error);
|
|
}
|
|
}
|