diff --git a/package-lock.json b/package-lock.json index c8364f1..8f54564 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "tracekit", - "version": "0.4.7", + "version": "0.4.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "tracekit", - "version": "0.4.7", + "version": "0.4.8", "license": "MIT", "devDependencies": { "grunt": "1.6.1", @@ -107,6 +107,7 @@ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/linkify-it": "*", "@types/mdurl": "*" @@ -2076,6 +2077,7 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "peer": true, "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -3662,6 +3664,7 @@ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", "dev": true, + "peer": true, "requires": { "@types/linkify-it": "*", "@types/mdurl": "*" @@ -5128,6 +5131,7 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "peer": true, "requires": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", diff --git a/spec/tracekit-spec.js b/spec/tracekit-spec.js index 36e36cc..397136e 100644 --- a/spec/tracekit-spec.js +++ b/spec/tracekit-spec.js @@ -87,6 +87,20 @@ expect(stack.message).toEqual('test'); }); + it('should handle undefined (e.g. from Promise.reject())', function () { + var stack = TraceKit.computeStackTrace(undefined); + expect(stack.name).toBeFalsy(); + expect(stack.message).toBeFalsy(); + expect(stack.mode).toEqual('failed'); + }); + + it('should handle null (e.g. from Promise.reject(null))', function () { + var stack = TraceKit.computeStackTrace(null); + expect(stack.name).toBeFalsy(); + expect(stack.message).toBeFalsy(); + expect(stack.mode).toEqual('failed'); + }); + it('should handle a native error object stack from Chrome', function () { var stackStr = '' + 'Error: foo\n' + diff --git a/tracekit.js b/tracekit.js index 37252b0..7536eb9 100644 --- a/tracekit.js +++ b/tracekit.js @@ -1242,8 +1242,8 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { } return { - 'name': ex.name, - 'message': ex.message, + 'name': ex && ex.name, + 'message': ex && ex.message, 'mode': 'failed' }; }