/** @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) {} } }) ); } } };