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