55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
import { logUtils } from '@0x/utils';
|
|
import Rollbar from 'rollbar';
|
|
import { configs } from 'ts/utils/configs';
|
|
import { constants } from 'ts/utils/constants';
|
|
import { utils } from 'ts/utils/utils';
|
|
|
|
// Suggested way to include Rollbar with Webpack
|
|
// https://github.com/rollbar/rollbar.js/tree/master/examples/webpack
|
|
const rollbarConfig = {
|
|
accessToken: constants.ROLLBAR_ACCESS_TOKEN,
|
|
captureUncaught: true,
|
|
captureUnhandledRejections: true,
|
|
itemsPerMinute: 10,
|
|
maxItems: 500,
|
|
payload: {
|
|
environment: utils.getEnvironment(),
|
|
client: {
|
|
javascript: {
|
|
source_map_enabled: true,
|
|
// This is only defined in production environments.
|
|
code_version: process.env.GIT_SHA,
|
|
guess_uncaught_frames: true,
|
|
},
|
|
},
|
|
},
|
|
uncaughtErrorLevel: 'error',
|
|
hostWhiteList: [configs.DOMAIN_PRODUCTION, configs.DOMAIN_STAGING],
|
|
ignoredMessages: [
|
|
// Errors from the third-party scripts
|
|
'Script error',
|
|
// Network errors or ad-blockers
|
|
'TypeError: Failed to fetch',
|
|
'Exchange has not been deployed to detected network (network/artifact mismatch)',
|
|
// Source: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-discuss/7VU0_VvC7mE
|
|
"undefined is not an object (evaluating '__gCrWeb.autofill.extractForms')",
|
|
// Source: http://stackoverflow.com/questions/43399818/securityerror-from-facebook-and-cross-domain-messaging
|
|
'SecurityError (DOM Exception 18)',
|
|
],
|
|
};
|
|
|
|
const rollbar = new Rollbar(rollbarConfig);
|
|
|
|
export const errorReporter = {
|
|
report(err: Error): void {
|
|
if (utils.isDevelopment()) {
|
|
return; // Let's not log development errors to rollbar
|
|
}
|
|
rollbar.error(err, (rollbarErr: Error) => {
|
|
if (rollbarErr) {
|
|
logUtils.log(`Error reporting to rollbar, ignoring: ${rollbarErr}`);
|
|
}
|
|
});
|
|
},
|
|
};
|