/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const loaderFlag = "LOADER_EXECUTION"; const webpackOptionsFlag = "WEBPACK_OPTIONS"; exports.cutOffByFlag = (stack, flag) => { stack = stack.split("\n"); for (let i = 0; i < stack.length; i++) { if (stack[i].includes(flag)) { stack.length = i; } } return stack.join("\n"); }; exports.cutOffLoaderExecution = stack => exports.cutOffByFlag(stack, loaderFlag); exports.cutOffWebpackOptions = stack => exports.cutOffByFlag(stack, webpackOptionsFlag); exports.cutOffMultilineMessage = (stack, message) => { stack = stack.split("\n"); message = message.split("\n"); const result = []; stack.forEach((line, idx) => { if (!line.includes(message[idx])) result.push(line); }); return result.join("\n"); }; exports.cutOffMessage = (stack, message) => { const nextLine = stack.indexOf("\n"); if (nextLine === -1) { return stack === message ? "" : stack; } else { const firstLine = stack.substr(0, nextLine); return firstLine === message ? stack.substr(nextLine + 1) : stack; } }; exports.cleanUp = (stack, message) => { stack = exports.cutOffLoaderExecution(stack); stack = exports.cutOffMessage(stack, message); return stack; }; exports.cleanUpWebpackOptions = (stack, message) => { stack = exports.cutOffWebpackOptions(stack); stack = exports.cutOffMultilineMessage(stack, message); return stack; };