From 29ede2231507ea9af806820b686e8f4927d841fc Mon Sep 17 00:00:00 2001 From: Artur Girenko Date: Sat, 23 Jul 2016 14:55:26 +0200 Subject: [PATCH] improve showing compilation exception details in YellowBox Figwheel logs compilation exception in several log messages, so need to buffer them to show in YellowBox. - buffering starts on "Fighweel: Compile Exception" - buffering stops on "Error on file" --- resources/figwheel-bridge.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/resources/figwheel-bridge.js b/resources/figwheel-bridge.js index 6d44d98..1891602 100644 --- a/resources/figwheel-bridge.js +++ b/resources/figwheel-bridge.js @@ -164,8 +164,25 @@ function interceptRequire() { function compileWarningsToYellowBox() { var log = window.console.log; var compileWarningRx = /Figwheel: Compile/; + var compileExceptionRx = /Figwheel: Compile Exception/; + var errorInFileRx = /Error on file/; + var isBuffering = false; + var compileExceptionBuffer = ""; window.console.log = function (msg) { - if (compileWarningRx.test(msg)) { + if (compileExceptionRx.test(msg)) { // enter buffering mode to get all the messages for exception + log.apply(window.console, arguments); + isBuffering = true; + compileExceptionBuffer = msg + "\n"; + } else if (errorInFileRx.test(msg) && isBuffering) { // exit buffering mode and log buffered messages to YellowBox + log.apply(window.console, arguments); + isBuffering = false; + console.warn(compileExceptionBuffer + msg); + compileExceptionBuffer = ""; + } else if (isBuffering) { //log messages buffering mode + log.apply(window.console, arguments); + compileExceptionBuffer += msg + "\n"; + } else if (compileWarningRx.test(msg)) { + log.apply(window.console, arguments); console.warn(msg); } else { log.apply(window.console, arguments);