You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			102 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | /* | ||
|  | 	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; |