123456789101112131415161718192021222324252627282930313233343536373839 |
- var isBrowser = require('./isBrowser');
- var SingleEmitter = require('./SingleEmitter');
- var isOn = false;
- exports = {
- start: function() {
- isOn = true;
- },
- stop: function() {
- isOn = false;
- }
- };
- SingleEmitter.mixin(exports);
- if (isBrowser) {
- window.addEventListener('error', function(event) {
- if (event.error) {
- callListeners(event.error);
- } else if (event.message) {
- var e = new Error(event.message);
- e.stack = 'Error: '
- .concat(event.message, ' \n at ')
- .concat(event.filename, ':')
- .concat(event.lineno, ':')
- .concat(event.colno);
- callListeners(e);
- }
- });
- window.addEventListener('unhandledrejection', function(e) {
- callListeners(e.reason);
- });
- } else {
- process.on('uncaughtException', callListeners);
- process.on('unhandledRejection', callListeners);
- }
- function callListeners(err) {
- if (!isOn) return;
- exports.emit(err);
- }
- module.exports = exports;
|