UNPKG

1.44 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const loaderFlag = "LOADER_EXECUTION";
8
9const webpackOptionsFlag = "WEBPACK_OPTIONS";
10
11exports.cutOffByFlag = (stack, flag) => {
12 stack = stack.split("\n");
13 for (let i = 0; i < stack.length; i++) {
14 if (stack[i].includes(flag)) {
15 stack.length = i;
16 }
17 }
18 return stack.join("\n");
19};
20
21exports.cutOffLoaderExecution = stack =>
22 exports.cutOffByFlag(stack, loaderFlag);
23
24exports.cutOffWebpackOptions = stack =>
25 exports.cutOffByFlag(stack, webpackOptionsFlag);
26
27exports.cutOffMultilineMessage = (stack, message) => {
28 stack = stack.split("\n");
29 message = message.split("\n");
30
31 return stack
32 .reduce(
33 (acc, line, idx) =>
34 line.includes(message[idx]) ? acc : acc.concat(line),
35 []
36 )
37 .join("\n");
38};
39
40exports.cutOffMessage = (stack, message) => {
41 const nextLine = stack.indexOf("\n");
42 if (nextLine === -1) {
43 return stack === message ? "" : stack;
44 } else {
45 const firstLine = stack.substr(0, nextLine);
46 return firstLine === message ? stack.substr(nextLine + 1) : stack;
47 }
48};
49
50exports.cleanUp = (stack, message) => {
51 stack = exports.cutOffLoaderExecution(stack);
52 stack = exports.cutOffMessage(stack, message);
53 return stack;
54};
55
56exports.cleanUpWebpackOptions = (stack, message) => {
57 stack = exports.cutOffWebpackOptions(stack);
58 stack = exports.cutOffMultilineMessage(stack, message);
59 return stack;
60};