diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7ba4b7c..83e476f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -22,7 +22,7 @@ Want to be listed as a *Contributor*? Make a pull request with: * Run `npm install` from the project directory ## Testing -* (Local) Run `gulp test`. Make sure [Karma Local Config](karma.conf.js) has the browsers you want. +* (Local) Run `npm test`. Make sure [Karma Local Config](karma.conf.js) has the browsers you want. * (Any browser, remotely) If you have a [Sauce Labs](https://saucelabs.com) account, you can run `gulp test-ci`. Make sure the target browser is enabled in [Karma CI Config](karma.conf.ci.js). Otherwise, Travis will run all browsers if you submit a Pull Request. diff --git a/.travis.yml b/.travis.yml index 6dfb2e5..8f40604 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,13 +5,7 @@ node_js: 8 addons: sauce_connect: true firefox: latest - apt: - sources: - - google-chrome - packages: - - google-chrome-stable -services: - - xvfb + chrome: stable before_install: - export CHROME_BIN=chromium-browser - export DISPLAY=:99.0 diff --git a/dist/error-stack-parser.js b/dist/error-stack-parser.js index 9de504a..5231091 100644 --- a/dist/error-stack-parser.js +++ b/dist/error-stack-parser.js @@ -56,21 +56,21 @@ return filtered.map(function(line) { if (line.indexOf('(eval ') > -1) { // Throw away eval information until we implement stacktrace.js/stackframe#8 - line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^()]*)|(\),.*$)/g, ''); + line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^()]*)|(,.*$)/g, ''); } - var sanitizedLine = line.replace(/^\s+/, '').replace(/\(eval code/g, '('); + var sanitizedLine = line.replace(/^\s+/, '').replace(/\(eval code/g, '(').replace(/^.*?\s+/, ''); // capture and preseve the parenthesized location "(/foo/my bar.js:12:87)" in // case it has spaces in it, as the string is split on \s+ later on - var location = sanitizedLine.match(/ (\((.+):(\d+):(\d+)\)$)/); + var location = sanitizedLine.match(/ (\(.+\)$)/); // remove the parenthesized location from the line, if it was matched sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine; - var tokens = sanitizedLine.split(/\s+/).slice(1); - // if a location was matched, pass it to extractLocation() otherwise pop the last token - var locationParts = this.extractLocation(location ? location[1] : tokens.pop()); - var functionName = tokens.join(' ') || undefined; + // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine + // because this line doesn't have function name + var locationParts = this.extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0]; return new StackFrame({ diff --git a/dist/error-stack-parser.min.js b/dist/error-stack-parser.min.js index 8087d26..e208083 100644 --- a/dist/error-stack-parser.min.js +++ b/dist/error-stack-parser.min.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define("stackframe",[],t):"object"==typeof exports?module.exports=t():e.StackFrame=t()}(this,function(){"use strict";function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function t(e){return function(){return this[e]}}var r=["isConstructor","isEval","isNative","isToplevel"],n=["columnNumber","lineNumber"],i=["fileName","functionName","source"],a=r.concat(n,i,["args"]);function o(t){if(t)for(var r=0;r-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var r=t.replace(/^\s+/,"").replace(/\(eval code/g,"("),n=r.match(/ (\((.+):(\d+):(\d+)\)$)/),i=(r=n?r.replace(n[0],""):r).split(/\s+/).slice(1),a=this.extractLocation(n?n[1]:i.pop()),o=i.join(" ")||void 0,s=["eval",""].indexOf(a[0])>-1?void 0:a[0];return new e({functionName:o,fileName:s,lineNumber:a[1],columnNumber:a[2],source:t})},this)},parseFFOrSafari:function(t){return t.stack.split("\n").filter(function(e){return!e.match(n)},this).map(function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e({functionName:t});var r=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=t.match(r),i=n&&n[1]?n[1]:void 0,a=this.extractLocation(t.replace(r,""));return new e({functionName:i,fileName:a[0],lineNumber:a[1],columnNumber:a[2],source:t})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var r=/Line (\d+).*script (?:in )?(\S+)/i,n=t.message.split("\n"),i=[],a=2,o=n.length;a/,"$2").replace(/\([^)]*\)/g,"")||void 0;a.match(/\(([^)]*)\)/)&&(r=a.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var s=void 0===r||"[arguments not available]"===r?void 0:r.split(",");return new e({functionName:o,args:s,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:t})},this)}}}); +!function(e,t){"use strict";"function"==typeof define&&define.amd?define("stackframe",[],t):"object"==typeof exports?module.exports=t():e.StackFrame=t()}(this,function(){"use strict";function r(e){return e.charAt(0).toUpperCase()+e.substring(1)}function e(e){return function(){return this[e]}}var t=["isConstructor","isEval","isNative","isToplevel"],n=["columnNumber","lineNumber"],i=["fileName","functionName","source"],a=t.concat(n,i,["args"]);function s(e){if(e)for(var t=0;t"].indexOf(n[0])?void 0:n[0];return new s({functionName:t,fileName:r,lineNumber:n[1],columnNumber:n[2],source:e})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(n)},this).map(function(e){if(-1===(e=-1 eval")?e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1"):e).indexOf("@")&&-1===e.indexOf(":"))return new s({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),r=r&&r[1]?r[1]:void 0,t=this.extractLocation(e.replace(t,""));return new s({functionName:r,fileName:t[0],lineNumber:t[1],columnNumber:t[2],source:e})},this)},parseOpera:function(e){return!e.stacktrace||-1e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,a=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0,i=void 0===(i=n.match(/\(([^)]*)\)/)?n.replace(/^[^(]+\(([^)]*)\)$/,"$1"):i)||"[arguments not available]"===i?void 0:i.split(",");return new s({functionName:t,args:i,fileName:r[0],lineNumber:r[1],columnNumber:r[2],source:e})},this)}}}); //# sourceMappingURL=error-stack-parser.min.js.map \ No newline at end of file diff --git a/dist/error-stack-parser.min.js.map b/dist/error-stack-parser.min.js.map index c0109a6..9e295a4 100644 --- a/dist/error-stack-parser.min.js.map +++ b/dist/error-stack-parser.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/stackframe/stackframe.js","error-stack-parser.js"],"names":["root","factory","define","amd","exports","module","StackFrame","this","_capitalize","str","charAt","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","props","concat","obj","i","length","undefined","prototype","getArgs","args","setArgs","v","Object","toString","call","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","indexOf","argsEndIndex","lastIndexOf","split","locationString","parts","exec","Boolean","j","n","isNaN","parseFloat","isFinite","Number","k","String","require","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","replace","filter","line","map","sanitizedLine","location","tokens","slice","locationParts","pop","join","source","functionNameRegex","matches","e","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","len","push","argsRaw","functionCall","shift"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["node_modules/stackframe/stackframe.js","error-stack-parser.js"],"names":["root","factory","define","amd","exports","module","StackFrame","this","_capitalize","str","charAt","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","props","concat","obj","i","length","undefined","prototype","getArgs","args","setArgs","v","Object","toString","call","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","indexOf","argsEndIndex","lastIndexOf","split","locationString","parts","exec","Boolean","j","n","isNaN","parseFloat","isFinite","Number","k","String","require","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","replace","filter","line","map","location","sanitizedLine","locationParts","source","functionNameRegex","matches","e","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","len","push","tokens","pop","functionCall","shift","argsRaw"],"mappings":"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"} \ No newline at end of file diff --git a/error-stack-parser.d.ts b/error-stack-parser.d.ts index c567839..c0ab289 100644 --- a/error-stack-parser.d.ts +++ b/error-stack-parser.d.ts @@ -3,57 +3,9 @@ // Definitions by: Eric Wendelin // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare module ErrorStackParser { - export interface StackFrame { - constructor(object: StackFrame): StackFrame; - - isConstructor?: boolean; - getIsConstructor(): boolean; - setIsConstructor(): void; - - isEval?: boolean; - getIsEval(): boolean; - setIsEval(): void; - - isNative?: boolean; - getIsNative(): boolean; - setIsNative(): void; - - isTopLevel?: boolean; - getIsTopLevel(): boolean; - setIsTopLevel(): void; - - columnNumber?: number; - getColumnNumber(): number; - setColumnNumber(): void; - - lineNumber?: number; - getLineNumber(): number; - setLineNumber(): void; - - fileName?: string; - getFileName(): string; - setFileName(): void; - - functionName?: string; - getFunctionName(): string; - setFunctionName(): void; - - source?: string; - getSource(): string; - setSource(): void; - - args?: any[]; - getArgs(): any[]; - setArgs(): void; - - evalOrigin?: StackFrame; - getEvalOrigin(): StackFrame; - setEvalOrigin(): void; - - toString(): string; - } +import StackFrame = require("stackframe"); +declare module ErrorStackParser { /** * Given an Error object, extract the most information from it. * diff --git a/error-stack-parser.js b/error-stack-parser.js index 9de504a..5231091 100644 --- a/error-stack-parser.js +++ b/error-stack-parser.js @@ -56,21 +56,21 @@ return filtered.map(function(line) { if (line.indexOf('(eval ') > -1) { // Throw away eval information until we implement stacktrace.js/stackframe#8 - line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^()]*)|(\),.*$)/g, ''); + line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^()]*)|(,.*$)/g, ''); } - var sanitizedLine = line.replace(/^\s+/, '').replace(/\(eval code/g, '('); + var sanitizedLine = line.replace(/^\s+/, '').replace(/\(eval code/g, '(').replace(/^.*?\s+/, ''); // capture and preseve the parenthesized location "(/foo/my bar.js:12:87)" in // case it has spaces in it, as the string is split on \s+ later on - var location = sanitizedLine.match(/ (\((.+):(\d+):(\d+)\)$)/); + var location = sanitizedLine.match(/ (\(.+\)$)/); // remove the parenthesized location from the line, if it was matched sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine; - var tokens = sanitizedLine.split(/\s+/).slice(1); - // if a location was matched, pass it to extractLocation() otherwise pop the last token - var locationParts = this.extractLocation(location ? location[1] : tokens.pop()); - var functionName = tokens.join(' ') || undefined; + // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine + // because this line doesn't have function name + var locationParts = this.extractLocation(location ? location[1] : sanitizedLine); + var functionName = location && sanitizedLine || undefined; var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0]; return new StackFrame({ diff --git a/package-lock.json b/package-lock.json index cc11e57..9920805 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "error-stack-parser", - "version": "2.0.5", + "version": "2.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -31,12 +31,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -161,12 +155,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true } } }, @@ -181,12 +169,6 @@ "to-fast-properties": "^2.0.0" }, "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -211,6 +193,12 @@ "negotiator": "0.6.2" } }, + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, "acorn-jsx": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", @@ -334,14 +322,6 @@ "dev": true, "requires": { "lodash": "^4.17.14" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } } }, "async-limiter": { @@ -1275,12 +1255,6 @@ "type-fest": "^0.8.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1362,14 +1336,6 @@ "acorn": "^7.1.0", "acorn-jsx": "^5.1.0", "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - } } }, "esquery": { @@ -1455,6 +1421,15 @@ "ms": "2.0.0" } }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1627,24 +1602,10 @@ } }, "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -1803,34 +1764,29 @@ "dev": true }, "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, - "uglify-js": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.3.tgz", - "integrity": "sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - } + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true } } }, @@ -1888,9 +1844,15 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "http-errors": { @@ -1907,9 +1869,9 @@ } }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -2064,12 +2026,6 @@ "supports-color": "^5.3.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -2366,12 +2322,12 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "html-escaper": "^2.0.0" } }, "jasmine": { @@ -2460,53 +2416,15 @@ } }, "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", "dev": true, "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "set-immediate-shim": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "karma": { @@ -2549,12 +2467,6 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -2593,12 +2505,6 @@ "source-map": "^0.5.1" }, "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -2711,9 +2617,9 @@ "dev": true }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ordered-read-streams": { @@ -2947,12 +2853,6 @@ "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "phantomjs-prebuilt": { "version": "2.1.16", "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", @@ -3318,9 +3218,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log4js": { @@ -3401,9 +3301,9 @@ }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "object-assign": { @@ -3457,12 +3357,20 @@ "dev": true }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "ms": { @@ -3864,6 +3772,29 @@ "read-pkg": "^1.0.0" } }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", @@ -4088,12 +4019,6 @@ "requires": { "lodash": "^4.17.14" } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true } } }, @@ -4453,12 +4378,6 @@ "requires": { "ms": "^2.1.1" } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true } } }, @@ -4547,12 +4466,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -4828,6 +4741,13 @@ } } }, + "uglify-js": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz", + "integrity": "sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw==", + "dev": true, + "optional": true + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", diff --git a/package.json b/package.json index c7956fc..9558fab 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "Oliver Salzburg (https://github.com/oliversalzburg)", "Ben Gourley (https://github.com/bengourley)" ], - "version": "2.0.5", + "version": "2.0.7", "license": "MIT", "keywords": [ "stacktrace", diff --git a/spec/error-stack-parser-spec.js b/spec/error-stack-parser-spec.js index 0777bff..8177b16 100644 --- a/spec/error-stack-parser-spec.js +++ b/spec/error-stack-parser-spec.js @@ -1,4 +1,3 @@ -// jscs:disable maximumLineLength /* global ErrorStackParser: false, CapturedExceptions: false */ describe('ErrorStackParser', function() { describe('#parse', function() { @@ -161,17 +160,6 @@ describe('ErrorStackParser', function() { expect(stackFrames[4]).toMatchStackFrame(['Global code', undefined, 'http://localhost:8080/file.js', 32, 9]); }); - it('should parse nested eval() from V8', function() { - var stackFrames = unit.parse(CapturedExceptions.CHROME_48_NESTED_EVAL); - expect(stackFrames).toBeTruthy(); - expect(stackFrames.length).toBe(5); - expect(stackFrames[0]).toMatchStackFrame(['baz', undefined, 'http://localhost:8080/file.js', 21, 17]); - expect(stackFrames[1]).toMatchStackFrame(['foo', undefined, 'http://localhost:8080/file.js', 21, 17]); - expect(stackFrames[2]).toMatchStackFrame(['eval', undefined, 'http://localhost:8080/file.js', 21, 17]); - expect(stackFrames[3]).toMatchStackFrame(['Object.speak', undefined, 'http://localhost:8080/file.js', 21, 17]); - expect(stackFrames[4]).toMatchStackFrame([undefined, undefined, 'http://localhost:8080/file.js', 31, 13]); - }); - it('should parse Opera 9.27 Error messages', function() { var stackFrames = unit.parse(CapturedExceptions.OPERA_927); expect(stackFrames).toBeTruthy(); @@ -237,10 +225,13 @@ describe('ErrorStackParser', function() { it('should handle spaces in Node.js stacks', function() { var stackframes = unit.parse(CapturedExceptions.NODE_WITH_SPACES); - expect(stackframes.length).toBe(7); + expect(stackframes.length).toBe(8); expect(stackframes[0].fileName).toEqual('/var/app/scratch/my project/index.js'); expect(stackframes[0].lineNumber).toBe(2); expect(stackframes[0].columnNumber).toBe(9); + expect(stackframes[1].fileName).toEqual('/var/app/scratch/my project/index.js'); + expect(stackframes[1].lineNumber).toBe(2); + expect(stackframes[1].columnNumber).toBe(9); }); }); }); diff --git a/spec/fixtures/captured-errors.js b/spec/fixtures/captured-errors.js index 36c6856..f7ff703 100644 --- a/spec/fixtures/captured-errors.js +++ b/spec/fixtures/captured-errors.js @@ -387,7 +387,8 @@ CapturedExceptions.EDGE_20_NESTED_EVAL = { CapturedExceptions.NODE_WITH_SPACES = { name: 'Error', message: '', - stack: 'Error\n at Object. ' + + stack: 'Error\n at /var/app/scratch/my '+ + 'project/index.js:2:9\n at Object. ' + '(/var/app/scratch/my ' + 'project/index.js:2:9)\n at Module._compile ' + '(internal/modules/cjs/loader.js:774:30)\n at ' +