12345678910111213141516171819202122232425262728293031323334353637383940 |
- 'use strict';
- const os = require('os');
-
- const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
- const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
- const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
-
- module.exports = (stack, options) => {
- options = Object.assign({pretty: false}, options);
-
- return stack.replace(/\\/g, '/')
- .split('\n')
- .filter(line => {
- const pathMatches = line.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(line => line.trim() !== '')
- .map(line => {
- if (options.pretty) {
- return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
- }
-
- return line;
- })
- .join('\n');
- };
|