"use strict"

const extractPath = /\s+at.*(?:\(|\s)(.*)\)?/
const isPath = /^(?:(?:(?:node|(?:internal\/[\w/]*)?\w+)\.js:\d+:\d+)|native)/

module.exports = function (stack) {
	return stack.replace(/\\/g, "/")
		.split("\n")
		.filter(x => {
			const pathMatches = x.match(extractPath)

			if (pathMatches === null || !pathMatches[1]) {
				return true;
			}

			return !isPath.test(pathMatches[1])
		})
		.filter(x => x.trim() !== "")
		.join("\n")
}

@@ -1,9 +1,9 @@
-%22
+'
 use stri
@@ -4,17 +4,18 @@
 e strict
-%22
+';
 %0A%0Aconst 
@@ -53,16 +53,17 @@
 (.*)%5C)?/
+;
 %0Aconst i
@@ -133,16 +133,17 @@
 native)/
+;
 %0A%0Amodule
@@ -205,30 +205,24 @@
 /g, 
-%22/%22)%0A%09%09
+'/')
 .split(
-%22%5Cn%22)%0A%09%09
+'%5Cn')
 .fil
@@ -238,20 +238,15 @@
 %7B%0A%09%09
-%09
 const 
-pathM
+m
 atch
@@ -274,22 +274,20 @@
 ath)
-%0A%0A%09%09%09if (pathM
+;%0A%09%09return m
 atch
@@ -302,21 +302,17 @@
 ull %7C%7C !
-pathM
+m
 atches%5B1
@@ -316,44 +316,11 @@
 s%5B1%5D
-) %7B%0A%09%09%09%09return true;%0A%09%09%09%7D%0A%0A%09%09%09return
+ %7C%7C
  !is
@@ -333,13 +333,9 @@
 est(
-pathM
+m
 atch
@@ -344,16 +344,13 @@
 %5B1%5D)
+;
 %0A
-%09
 %09%7D)
-%0A%09%09
 .fil
@@ -375,24 +375,22 @@
 !== 
-%22%22)%0A%09%09
+'')
 .join(
-%22%5Cn%22)
+'%5Cn');
 %0A%7D%0A

consolidate utils.trace