| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const loaderFlag = "LOADER_EXECUTION";const webpackOptionsFlag = "WEBPACK_OPTIONS";/** * @param {string} stack stack trace * @param {string} flag flag to cut off * @returns {string} stack trace without the specified flag included */const cutOffByFlag = (stack, flag) => {	const errorStack = stack.split("\n");	for (let i = 0; i < errorStack.length; i++) {		if (errorStack[i].includes(flag)) {			errorStack.length = i;		}	}	return errorStack.join("\n");};/** * @param {string} stack stack trace * @returns {string} stack trace without the loader execution flag included */const cutOffLoaderExecution = stack => cutOffByFlag(stack, loaderFlag);/** * @param {string} stack stack trace * @returns {string} stack trace without the webpack options flag included */const cutOffWebpackOptions = stack => cutOffByFlag(stack, webpackOptionsFlag);/** * @param {string} stack stack trace * @param {string} message error message * @returns {string} stack trace without the message included */const cutOffMultilineMessage = (stack, message) => {	const stackSplitByLines = stack.split("\n");	const messageSplitByLines = message.split("\n");	/** @type {string[]} */	const result = [];	stackSplitByLines.forEach((line, idx) => {		if (!line.includes(messageSplitByLines[idx])) result.push(line);	});	return result.join("\n");};/** * @param {string} stack stack trace * @param {string} message error message * @returns {string} stack trace without the message included */const cutOffMessage = (stack, message) => {	const nextLine = stack.indexOf("\n");	if (nextLine === -1) {		return stack === message ? "" : stack;	} else {		const firstLine = stack.slice(0, nextLine);		return firstLine === message ? stack.slice(nextLine + 1) : stack;	}};/** * @param {string} stack stack trace * @param {string} message error message * @returns {string} stack trace without the loader execution flag and message included */const cleanUp = (stack, message) => {	stack = cutOffLoaderExecution(stack);	stack = cutOffMessage(stack, message);	return stack;};/** * @param {string} stack stack trace * @param {string} message error message * @returns {string} stack trace without the webpack options flag and message included */const cleanUpWebpackOptions = (stack, message) => {	stack = cutOffWebpackOptions(stack);	stack = cutOffMultilineMessage(stack, message);	return stack;};exports.cutOffByFlag = cutOffByFlag;exports.cutOffLoaderExecution = cutOffLoaderExecution;exports.cutOffWebpackOptions = cutOffWebpackOptions;exports.cutOffMultilineMessage = cutOffMultilineMessage;exports.cutOffMessage = cutOffMessage;exports.cleanUp = cleanUp;exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
 |