101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, '__esModule', { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.restoreGlobalErrorHandlers = exports.injectGlobalErrorHandlers = void 0; | ||
|  | 
 | ||
|  | var _state = require('./state'); | ||
|  | 
 | ||
|  | var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol; | ||
|  | 
 | ||
|  | const uncaught = error => { | ||
|  |   (0, _state.dispatch)({ | ||
|  |     error, | ||
|  |     name: 'error' | ||
|  |   }); | ||
|  | }; | ||
|  | 
 | ||
|  | const injectGlobalErrorHandlers = parentProcess => { | ||
|  |   const uncaughtException = process.listeners('uncaughtException').slice(); | ||
|  |   const unhandledRejection = process.listeners('unhandledRejection').slice(); | ||
|  |   parentProcess.removeAllListeners('uncaughtException'); | ||
|  |   parentProcess.removeAllListeners('unhandledRejection'); | ||
|  |   parentProcess.on('uncaughtException', uncaught); | ||
|  |   parentProcess.on('unhandledRejection', uncaught); | ||
|  |   return { | ||
|  |     uncaughtException, | ||
|  |     unhandledRejection | ||
|  |   }; | ||
|  | }; | ||
|  | 
 | ||
|  | exports.injectGlobalErrorHandlers = injectGlobalErrorHandlers; | ||
|  | 
 | ||
|  | const restoreGlobalErrorHandlers = (parentProcess, originalErrorHandlers) => { | ||
|  |   parentProcess.removeListener('uncaughtException', uncaught); | ||
|  |   parentProcess.removeListener('unhandledRejection', uncaught); | ||
|  |   var _iteratorNormalCompletion = true; | ||
|  |   var _didIteratorError = false; | ||
|  |   var _iteratorError = undefined; | ||
|  | 
 | ||
|  |   try { | ||
|  |     for ( | ||
|  |       var _iterator = originalErrorHandlers.uncaughtException[ | ||
|  |           Symbol.iterator | ||
|  |         ](), | ||
|  |         _step; | ||
|  |       !(_iteratorNormalCompletion = (_step = _iterator.next()).done); | ||
|  |       _iteratorNormalCompletion = true | ||
|  |     ) { | ||
|  |       const listener = _step.value; | ||
|  |       parentProcess.on('uncaughtException', listener); | ||
|  |     } | ||
|  |   } catch (err) { | ||
|  |     _didIteratorError = true; | ||
|  |     _iteratorError = err; | ||
|  |   } finally { | ||
|  |     try { | ||
|  |       if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
|  |         _iterator.return(); | ||
|  |       } | ||
|  |     } finally { | ||
|  |       if (_didIteratorError) { | ||
|  |         throw _iteratorError; | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   var _iteratorNormalCompletion2 = true; | ||
|  |   var _didIteratorError2 = false; | ||
|  |   var _iteratorError2 = undefined; | ||
|  | 
 | ||
|  |   try { | ||
|  |     for ( | ||
|  |       var _iterator2 = originalErrorHandlers.unhandledRejection[ | ||
|  |           Symbol.iterator | ||
|  |         ](), | ||
|  |         _step2; | ||
|  |       !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); | ||
|  |       _iteratorNormalCompletion2 = true | ||
|  |     ) { | ||
|  |       const listener = _step2.value; | ||
|  |       parentProcess.on('unhandledRejection', listener); | ||
|  |     } | ||
|  |   } catch (err) { | ||
|  |     _didIteratorError2 = true; | ||
|  |     _iteratorError2 = err; | ||
|  |   } finally { | ||
|  |     try { | ||
|  |       if (!_iteratorNormalCompletion2 && _iterator2.return != null) { | ||
|  |         _iterator2.return(); | ||
|  |       } | ||
|  |     } finally { | ||
|  |       if (_didIteratorError2) { | ||
|  |         throw _iteratorError2; | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | exports.restoreGlobalErrorHandlers = restoreGlobalErrorHandlers; |