Files
2019-05-31 18:33:56 +02:00

58 lines
1.4 KiB
JavaScript

/** @babel */
import { CompositeDisposable } from 'atom';
let reporter;
function getReporter() {
if (!reporter) {
const Reporter = require('./reporter');
reporter = new Reporter();
}
return reporter;
}
export default {
activate() {
this.subscriptions = new CompositeDisposable();
if (!atom.config.get('exception-reporting.userId')) {
atom.config.set('exception-reporting.userId', require('node-uuid').v4());
}
this.subscriptions.add(
atom.onDidThrowError(({ message, url, line, column, originalError }) => {
try {
getReporter().reportUncaughtException(originalError);
} catch (secondaryException) {
try {
console.error(
'Error reporting uncaught exception',
secondaryException
);
getReporter().reportUncaughtException(secondaryException);
} catch (error) {}
}
})
);
if (atom.onDidFailAssertion != null) {
this.subscriptions.add(
atom.onDidFailAssertion(error => {
try {
getReporter().reportFailedAssertion(error);
} catch (secondaryException) {
try {
console.error(
'Error reporting assertion failure',
secondaryException
);
getReporter().reportUncaughtException(secondaryException);
} catch (error) {}
}
})
);
}
}
};