aboutsummaryrefslogtreecommitdiff
path: root/node_modules/clean-stack/index.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/clean-stack/index.js
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/clean-stack/index.js')
-rw-r--r--node_modules/clean-stack/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/node_modules/clean-stack/index.js b/node_modules/clean-stack/index.js
new file mode 100644
index 000000000..10aca5e7e
--- /dev/null
+++ b/node_modules/clean-stack/index.js
@@ -0,0 +1,38 @@
+'use strict';
+const os = require('os');
+
+const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
+const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/babel-polyfill\/.*)?\w+)\.js:\d+:\d+)|native)/;
+const homeDir = os.homedir();
+
+module.exports = (stack, options) => {
+ options = Object.assign({pretty: false}, options);
+
+ return stack.replace(/\\/g, '/')
+ .split('\n')
+ .filter(x => {
+ const pathMatches = x.match(extractPathRegex);
+ if (pathMatches === null || !pathMatches[1]) {
+ return true;
+ }
+
+ const match = pathMatches[1];
+
+ // Electron
+ if (match.includes('.app/Contents/Resources/electron.asar') ||
+ match.includes('.app/Contents/Resources/default_app.asar')) {
+ return false;
+ }
+
+ return !pathRegex.test(match);
+ })
+ .filter(x => x.trim() !== '')
+ .map(x => {
+ if (options.pretty) {
+ return x.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
+ }
+
+ return x;
+ })
+ .join('\n');
+};