honeybadger
Version:
A JavaScript library for integrating apps with the Honeybadger Rails Error Notifier.
70 lines (63 loc) • 2.08 kB
text/coffeescript
goog.provide 'notice'
class Notice
constructor: ( = {}) ->
= .stackInfo || ( .error && TraceKit.computeStackTrace( .error))
=
= ?.name
= ?.message
= &&
= document.URL
= Honeybadger.configuration.project_root
= Honeybadger.configuration.environment
= Honeybadger.configuration.component
= Honeybadger.configuration.action
= {}
for k,v of Honeybadger.context
[k] = v
if .context
for k,v of .context
[k] = v
toJSON: ->
JSON.stringify
notifier:
name: 'honeybadger.js'
url: 'https://github.com/honeybadger-io/honeybadger-js'
version: Honeybadger.version
language: 'javascript'
error:
class:
message:
backtrace:
source:
request:
url:
component:
action:
context:
cgi_data:
server:
project_root:
environment_name:
_parseBacktrace: (stack = []) ->
backtrace = []
for trace in stack
continue if trace.url.match /honeybadger(?:\.min)?\.js/
backtrace.push
file: trace.url.replace(Honeybadger.configuration.project_root, '[PROJECT_ROOT]'),
number: trace.line,
method: trace.func
backtrace
_extractSource: (stack = []) ->
source = {}
for line, i in (stack[0]?.context ? [])
source[i] = line
source
_cgiData: () ->
data = {}
for k,v of navigator
unless typeof v == 'object'
data[k.split(/(?=[A-Z][a-z]*)/).join('_').toUpperCase()] = v
data['HTTP_USER_AGENT'] = data['USER_AGENT']
delete data['USER_AGENT']
data['HTTP_REFERER'] = document.referrer if document.referrer.match /\S/
data