You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
/* |
|
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; |
|
};
|
|
|