Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

saucer

  • Loading branch information...
commit d18e48d5a59ee0261291bb9407dfed6b08c9cf9e 1 parent 34cad1b
@joshuap joshuap authored
View
5 .gitignore
@@ -1,2 +1,3 @@
-js/*.js
-spec/javascripts/*_spec.js
+build/
+node_modules/
+lib/closure/compiler.jar
View
3  .gitmodules
@@ -0,0 +1,3 @@
+[submodule "lib/closure/library"]
+ path = lib/closure/library
+ url = git://github.com/jbenet/saucer.git
View
11 Gemfile
@@ -1,11 +0,0 @@
-source :rubygems
-
-gem 'rake'
-gem 'guard'
-gem 'guard-coffeescript'
-gem 'guard-livereload'
-gem 'jasmine'
-
-if RUBY_PLATFORM =~ /darwin/i
- gem 'rb-fsevent'
-end
View
79 Gemfile.lock
@@ -1,79 +0,0 @@
-GEM
- remote: http://rubygems.org/
- specs:
- addressable (2.3.2)
- childprocess (0.3.6)
- ffi (~> 1.0, >= 1.0.6)
- coderay (1.0.8)
- coffee-script (2.2.0)
- coffee-script-source
- execjs
- coffee-script-source (1.4.0)
- diff-lcs (1.1.3)
- em-websocket (0.3.8)
- addressable (>= 2.1.1)
- eventmachine (>= 0.12.9)
- eventmachine (1.0.0)
- execjs (1.4.0)
- multi_json (~> 1.0)
- ffi (1.2.0)
- guard (1.5.4)
- listen (>= 0.4.2)
- lumberjack (>= 1.0.2)
- pry (>= 0.9.10)
- thor (>= 0.14.6)
- guard-coffeescript (1.2.1)
- coffee-script (>= 2.2.0)
- guard (>= 1.1.0)
- guard-livereload (1.1.2)
- em-websocket (>= 0.2.0)
- guard (>= 1.5.0)
- multi_json (~> 1.0)
- jasmine (1.3.1)
- jasmine-core (~> 1.3.1)
- rack (~> 1.0)
- rspec (>= 1.3.1)
- selenium-webdriver (>= 0.1.3)
- jasmine-core (1.3.1)
- libwebsocket (0.1.7.1)
- addressable
- websocket
- listen (0.6.0)
- lumberjack (1.0.2)
- method_source (0.8.1)
- multi_json (1.5.0)
- pry (0.9.10)
- coderay (~> 1.0.5)
- method_source (~> 0.8)
- slop (~> 3.3.1)
- rack (1.4.1)
- rake (10.0.2)
- rb-fsevent (0.9.2)
- rspec (2.12.0)
- rspec-core (~> 2.12.0)
- rspec-expectations (~> 2.12.0)
- rspec-mocks (~> 2.12.0)
- rspec-core (2.12.2)
- rspec-expectations (2.12.0)
- diff-lcs (~> 1.1.3)
- rspec-mocks (2.12.0)
- rubyzip (0.9.9)
- selenium-webdriver (2.27.2)
- childprocess (>= 0.2.5)
- libwebsocket (~> 0.1.3)
- multi_json (~> 1.0)
- rubyzip
- slop (3.3.3)
- thor (0.16.0)
- websocket (1.0.4)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- guard
- guard-coffeescript
- guard-livereload
- jasmine
- rake
- rb-fsevent
View
213 Gruntfile.coffee
@@ -0,0 +1,213 @@
+module.exports = (grunt) ->
+
+ _ = require 'underscore'
+
+ # paths setup - separate as some modules dont process templates correctly
+ paths =
+
+ # build directory
+ build_dir: 'build'
+
+ # -- sources --
+
+ # coffescript sources
+ coffee_dir: 'coffee'
+ coffee_src: 'coffee/**/*.coffee'
+
+ # -- compiled output --
+
+ # javascript sources
+ js_dir: 'build/js'
+ js_src: 'build/js/src/**/*.js'
+ js_specs: 'build/js/test/**/*.spec.js'
+ js_vendor: 'build/js/vendor/*.js'
+
+ # minified target name
+ minified: 'honeybadger.min.js'
+
+ # -- libraries --
+
+ # libraries to load in the frontend
+ frontend_libs: [
+ 'lib/closure/library/closure/goog/base.js', # for dependencies
+ 'node_modules/json3/lib/json3.js', # cross-browser JSON support
+ 'vendor/tracekit.js' # awesome stack traces
+ ]
+
+
+ # -- YOU SHOULD NOT NEED TO MODIFY BELOW THIS LINE --
+ # you may have to... if things break...
+
+
+ # Paths to copy into the build directory:
+ #
+ # build_includes:
+ # '<dest-path-1>' : '<src-path-1>'
+ # '<dest-path-2>/' : '<src-path-2>/**'
+ # '<dest-path-3>/' : [ '<src-path-3>', '<src-path-4>' ]
+ #
+ # The above will copy:
+ # <src-path-1> to <paths.build_dir>/<src-dest-1> (single file)
+ # <src-path-2>/ to <paths.build_dir>/<dest-path-2> (directory and contents)
+ # <src-path-3> and <src-path-4> into <paths.build_dir>/<dest-path-3>/
+ #
+ # Note that:
+ # - if a source path ends in a '/**' and points to a directory, the
+ # contents of the directory are copied, rather than the directory itself.
+ # - destination paths _must_ end in a '/' to be directories. e.g.
+ # `'dest': 'src'` copies `src` to `<paths.build_dir>/dest`
+ # `'dest/': 'src/**'` copies `src` to `<paths.build_dir>/dest/src`
+ paths.build_includes =
+ 'js/vendor/json3.js' : 'node_modules/json3/lib/json3.js'
+ 'js/vendor/tracekit.js' : 'vendor/tracekit.js'
+
+ # prepend all dst paths with the build dir.
+ paths.build_includes = _.object _.map paths.build_includes, (src, dst) ->
+ [ "#{paths.build_dir}/#{dst}", src ]
+
+ # google closure paths
+ paths.closure =
+
+ # dependencies file
+ deps: "#{paths.js_dir}/deps.js"
+
+ # main entry point
+ main: "#{paths.js_dir}/src/honeybadger.js"
+
+ # output file for the compiler
+ compiled: paths.minified
+
+ # source map output filepath
+ source_map: "#{paths.minified}.map"
+
+ # root of the sources that closure should use
+ # silliness. because depswriter.py uses paths relative to closure library
+ root_with_prefix: "'#{paths.js_dir} ../../../../../#{paths.js_dir}'"
+
+ # path to library. this should be a submodule.
+ library: 'lib/closure/library'
+
+ # path to compiler. this should be a symlink (or the actual jar).
+ compiler: 'lib/closure/compiler.jar'
+
+
+ # jasmine paths
+ paths.jasmine =
+
+ # lib to include before sources (e.g. jquery, underscore, etc).
+ lib: paths.frontend_libs
+
+ # src to include. use closure deps and main entry point
+ src: [paths.closure.deps, paths.closure.main]
+
+ # specs to include.
+ specs: paths.js_specs
+
+
+
+ # Project configuration.
+ grunt.initConfig
+
+ # load package information
+ pkg: grunt.file.readJSON 'package.json'
+
+ # task to compile coffeescript into javascript
+ coffee:
+ default:
+ src: paths.coffee_src
+ dest: paths.js_dir
+ options:
+ preserve_dirs: true
+ base_path: paths.coffee_dir
+
+
+
+ # task to compute file dependencies (closure)
+ closureDepsWriter:
+ default:
+ closureLibraryPath: paths.closure.library
+ options:
+ output_file: paths.closure.deps
+ root_with_prefix: paths.closure.root_with_prefix
+
+ # task to compile code into a minified file (closure)
+ closureCompiler:
+ default:
+ js: [paths.js_vendor, paths.js_src]
+ closureCompiler: paths.closure.compiler
+ checkModified: true
+ options:
+ # compilation_level: 'ADVANCED_OPTIMIZATIONS',
+ # externs: ['path/to/file.js', '/source/**/*.js'],
+ # define: ["'goog.DEBUG=false'"],
+ # warning_level: 'verbose',
+ # jscomp_off: ['checkTypes', 'fileoverviewTags'],
+ # summary_detail_level: 3,
+ js_output_file: paths.closure.compiled
+ output_wrapper: '"\'use strict\';\n(function(){%output%}).call(this);"'
+ create_source_map: paths.closure.source_map
+ source_map_format: "V3"
+
+ # task to run jasmine tests through the commandline via phantomjs
+ jasmine:
+ # concat because jasmine-runner doesnt support libs (before srcs)
+ src: [].concat(paths.jasmine.lib, paths.jasmine.src)
+ specs: paths.jasmine.specs
+
+ # task to run jasmine tests in a webserver
+ jasmineSpecServer:
+ lib: paths.jasmine.lib
+ src: paths.jasmine.src
+ specs: paths.jasmine.specs
+
+ # task to watch sources for changes and recompile during development
+ watch:
+ files: paths.coffee_src
+ tasks: 'deps' # or 'test', or 'server' :)
+
+ # task to copy files into build
+ copy:
+ build:
+ files: paths.build_includes
+
+ # task to clean up directories
+ clean:
+
+ # the generated build dir
+ build: paths.build_dir
+
+ # the generated jasmine-runner tester file
+ test: ['_SpecRunner.html']
+
+ # task to run shell commands
+ exec:
+ # create the build directory. closure errors out if it isn't there...
+ mkbuild: command: "mkdir -p \"#{paths.build_dir}\""
+
+ process_source_maps:
+ stdout: true
+ command: (grunt) ->
+ "python build_scripts/process_source_maps.py
+ --compiled-source=#{paths.closure.compiled}
+ --source-map=#{paths.closure.source_map}
+ --web-root=#{paths.build_dir}"
+
+
+
+ # Load tasks
+ grunt.loadNpmTasks 'grunt-exec'
+ grunt.loadNpmTasks 'grunt-coffee'
+ grunt.loadNpmTasks 'grunt-contrib-copy'
+ grunt.loadNpmTasks 'grunt-contrib-clean'
+ grunt.loadNpmTasks 'grunt-closure-tools'
+ grunt.loadNpmTasks 'grunt-jasmine-runner'
+ grunt.loadNpmTasks 'grunt-jasmine-spec-server'
+
+ # Register tasks
+ grunt.registerTask 'compile', ['exec:mkbuild', 'coffee', 'closureCompiler',
+ 'copy:build',
+ 'exec:process_source_maps']
+ grunt.registerTask 'deps', ['coffee', 'closureDepsWriter']
+ grunt.registerTask 'test', ['deps', 'jasmine', 'clean:test']
+ grunt.registerTask 'server', ['deps', 'jasmineSpecServer', 'watch']
+ grunt.registerTask 'default', ['compile']
View
12 Guardfile
@@ -1,12 +0,0 @@
-guard 'coffeescript', output: 'js' do
- watch(/src\/(.*)\.coffee/)
-end
-
-guard 'coffeescript', :output => 'spec/javascripts' do
- watch(/^spec\/(.*)\.coffee/)
-end
-
-guard 'livereload' do
- watch(/^spec\/javascripts\/.+\.js$/)
- watch(/^js\/.+\.js$/)
-end
View
132 README.md
@@ -1,2 +1,130 @@
-honeybadger-js
-==============
+# Honeybadger
+
+A JavaScript library for integrating apps with the :zap: [Honeybadger Rails Error Notifier](http://honeybadger.io).
+
+## Usage
+
+ Honeybadger.configure({
+ api_key: 'your api key'
+ });
+
+ try {
+ ...error producing code...
+ } catch(e) {
+ Honeybadger.notify(e);
+ }
+
+## Development
+
+honeybadger-js is inspired by [saucer, the coffeescript boilerplate](https://github.com/jbenet/saucer).
+
+![def](http://static.benet.ai/skitch/saucer-20121208-004907.png)
+
+Saucer is an opinionated template project for coffee/javascript development.
+It gets you up and running with the following tools:
+
+* [coffeescript](http://coffeescript.org/) for awesomeness
+* [grunt](http://gruntjs.com/) for the task-based build system
+* [npm](http://npmjs.org/) for installing other packages
+* [jasmine](http://pivotal.github.com/jasmine/) for tests
+ * [jasmine-runner](https://github.com/jasmine-contrib/grunt-jasmine-runner)
+ for the commandline (with [phantomjs](http://phantomjs.org/))
+ * [jasmine-spec-server](https://github.com/jbenet/grunt-jasmine-spec-server)
+ for the webserver
+* [closure compiler](https://developers.google.com/closure/) for dependencies
+ and minification
+
+and the frontend libs:
+
+* [jquery](http://jquery.com/) for dom manipulation
+* [underscore](http://underscorejs.org) for awesome utilities
+* [backbone](http://backbonejs.org/) for awesome mvc apps
+* [bootstrap](twitter.github.com/bootstrap/) for awesome style
+
+(if you don't need any of these, you can just delete them).
+
+### install
+
+#### clone the source
+
+ git clone https://github.com/jbenet/saucer.git my-project
+ cd my-project
+
+#### install dependencies
+
+* [node and npm](http://nodejs.org/download/)
+ or in osx:
+
+ brew install nodejs
+
+* [phantomjs](http://phantomjs.org/)
+ or in osx:
+
+ brew install phantomjs
+
+* [closure compiler](http://code.google.com/p/closure-compiler/downloads/list)
+ or in osx:
+
+ brew install closure-compiler
+
+#### setup google closure
+
+Move (or create a symlink to) the closure compiler jar to
+`lib/closure/compiler.jar`. For example, in osx:
+
+ % mv ~/Downloads/compiler-latest/compiler.jar lib/closure/.
+
+or
+
+ % ln -s /usr/local/Cellar/closure-compiler/20120917/libexec/build/compiler.jar lib/closure/.
+
+Initialize google closure-tools submodule:
+
+ % git submodule init
+ % git submodule update
+
+#### install node modules
+
+ % npm install
+
+### source tree
+
+Saucer organizes the code thus:
+
+ ├── Gruntfile.coffee - the grunt task file
+ ├── README.md - this file
+ ├── build - the build directory, for compiled code
+ ├── coffee - coffeescript code
+ │ ├── src - coffeescript source files
+ │ └── test - coffeescript test files
+ ├── js - javascript code (generated from coffee/)
+ │ ├── deps.js - generated dependencies file (closure)
+ │ ├── src - javascript source files
+ │ └── test - javascript test files
+ ├── lib - libraries
+ │ └── closure - closure library + compiler
+ ├── node_modules - npm installed modules
+ └── package.json - package info
+
+### grunt tasks
+
+Available tasks (ignore others):
+
+ coffee Compile CoffeeScript files (coffee/ to js/)
+ deps Generates file dependencies (js/deps.js)
+ test Runs jasmine tests in the commandline.
+ server Runs jasmine tests in a webserver.
+ compile Closure compiles the source (js/src/).
+ default Alias for "compile" task.
+ watch Watches coffee/ and re-runs "deps"
+ clean Clear files and folders (js/, build/)
+
+### testing
+
+You can run the tests from the commandline (using phantomjs):
+
+ grunt --config Gruntfile.coffee test
+
+You can also run the tests in the browser:
+
+ grunt --config Gruntfile.coffee server
View
10 Rakefile
@@ -1,10 +0,0 @@
-
-begin
- require 'jasmine'
- load 'jasmine/tasks/jasmine.rake'
- Jasmine.config.add_rack_path('/__vendor__', lambda { Rack::File.new('vendor') })
-rescue LoadError
- task :jasmine do
- abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
- end
-end
View
74 build_scripts/process_source_maps.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+import argparse
+import json
+import os.path
+import re
+
+'''
+Processes a Closure JavaScript source map to reflect a web root path that is
+different from closure's current working directory (CWD).
+
+Note that in order for source maps to work, the original source files must
+reside within web-root.
+'''
+
+def process_source_map(source_map, web_root):
+ # Trim 'file' property of source map
+ source_map['file'] = filepath_trim_prefix(source_map['file'], web_root)
+
+ # Trim paths in 'sources' property of source map
+ sources = []
+ for src in source_map['sources']:
+ trimmed_src = filepath_trim_prefix(src, web_root)
+ sources.append(trimmed_src)
+
+ source_map['sources'] = sources
+
+ return source_map
+
+
+def append_source_map_directive(compiled_filepath, source_map_filepath,
+ web_root):
+ trimmed_filepath = filepath_trim_prefix(source_map_filepath, web_root)
+ with open(compiled_filepath, 'a') as f:
+ f.write('\n//@ sourceMappingURL=%s' % trimmed_filepath)
+
+
+def filepath_trim_prefix(filepath, prefix):
+ match = re.match(r'^%s([^\s]*)$' % prefix, filepath)
+ if match:
+ return match.group(1)
+
+ return filepath
+
+
+def main():
+ parser = argparse.ArgumentParser()
+
+ parser.add_argument('--compiled-source', '-c', dest='compiled_source',
+ required=True)
+ parser.add_argument('--source-map', '-m', dest='source_map', required=True)
+ parser.add_argument('--web-root', '-r', dest='web_root', required=True)
+ args = parser.parse_args()
+
+ # process arguments
+ web_root = os.path.normpath(args.web_root)
+ compiled_filepath = os.path.normpath(args.compiled_source)
+ source_map_filepath = os.path.normpath(args.source_map)
+
+ source_map = None
+ with open(source_map_filepath) as f:
+ source_map_str = f.read()
+ source_map = json.loads(source_map_str)
+
+ source_map = process_source_map(source_map, web_root)
+ with open(source_map_filepath, 'w') as f:
+ source_map_str = json.dumps(source_map, indent=2, separators=(',', ': '),
+ sort_keys=True)
+ f.write(source_map_str)
+
+ append_source_map_directive(compiled_filepath, source_map_filepath, web_root)
+
+if __name__ == '__main__':
+ exit(main())
View
15 src/honeybadger.coffee → coffee/src/honeybadger.coffee
@@ -1,11 +1,12 @@
-#= require 'json2'
-#= require 'tracekit'
+goog.provide 'honeybadger'
-window.Honeybadger = class Honeybadger
+goog.require 'notice'
+
+class Honeybadger
@version: '0.0.1'
TraceKit.report.subscribe (stackInfo) ->
- @notify(null, { stackInfo: stackInfo })
+ Honeybadger.notify(null, { stackInfo: stackInfo })
@default_configuration:
api_key: null
@@ -42,7 +43,7 @@ window.Honeybadger = class Honeybadger
# TODO: Test setting options from notify
@notify: (error, options = {}) ->
options['error'] = error if error
- notice = new this.Notice(options)
+ notice = new Notice(options)
@_sendRequest(notice.toJSON())
# http://www.w3.org/TR/cors/
@@ -78,3 +79,7 @@ window.Honeybadger = class Honeybadger
document.body.appendChild form
form.submit()
+
+# make sure to export the modules you want to expose,
+# otherwise they won't be accessible by clients.
+(exports ? this).Honeybadger = Honeybadger
View
5 src/notice.coffee → coffee/src/notice.coffee
@@ -1,4 +1,6 @@
-class Honeybadger.Notice
+goog.provide 'notice'
+
+class Notice
constructor: (@options = {}) ->
@stackInfo = @options.stackInfo || (@options.error && TraceKit.computeStackTrace(@options.error))
@trace = @_parseBacktrace(@stackInfo?.stack)
@@ -39,6 +41,7 @@ class Honeybadger.Notice
_parseBacktrace: (stack = []) ->
backtrace = []
for trace in stack
+ continue if trace.url.match /honeybadger\.js/
backtrace.push
file: trace.url.replace(Honeybadger.configuration.project_root, '[PROJECT_ROOT]'),
number: trace.line,
View
6 spec/configuration_spec.coffee → coffee/test/configuration.spec.coffee
@@ -1,3 +1,7 @@
+goog.provide 'configuration.spec'
+
+goog.require 'honeybadger'
+
describe 'Configuration', ->
subject = Honeybadger.configuration
@@ -27,7 +31,7 @@ describe 'Configuration', ->
it 'has project_root', ->
expect(subject.project_root).toBeDefined()
- expect(subject.project_root).toEqual('http://localhost:8888')
+ expect(subject.project_root).toEqual('http://127.0.0.1:8888')
it 'sets the project_root', ->
subject.project_root = 'http://foo.bar'
View
9 spec/honeybadger_spec.coffee → coffee/test/honeybadger.spec.coffee
@@ -1,3 +1,7 @@
+goog.provide 'honeybadger.spec'
+
+goog.require 'honeybadger'
+
describe 'Honeybadger', ->
beforeEach () ->
Honeybadger.configuration.reset()
@@ -52,7 +56,7 @@ describe 'Honeybadger', ->
describe '.notify', ->
it 'delivers the notice', ->
spyOn(Honeybadger, '_sendRequest').andCallThrough()
- expected_error = null
+ notice = null
Honeybadger.configure
api_key: '780b8d0c'
@@ -62,8 +66,7 @@ describe 'Honeybadger', ->
try
'foo'.bar()
catch error
- expected_error = error
Honeybadger.notify(error)
+ notice = new Notice({ error: error })
- notice = new Honeybadger.Notice({ error: expected_error })
expect(Honeybadger._sendRequest).toHaveBeenCalledWith(notice.toJSON())
View
18 spec/notice_spec.coffee → coffee/test/notice.spec.coffee
@@ -1,31 +1,37 @@
+goog.provide 'notice.spec'
+
+goog.require 'honeybadger'
+
describe 'Notice', ->
describe 'context option', ->
it 'allows setting context from options array', ->
Honeybadger.resetContext()
- notice = new Honeybadger.Notice(context: { user_id: '1' })
+ notice = new Notice(context: { user_id: '1' })
expect(notice.context).toEqual({ user_id: '1' })
it 'overrides global context without changing it', ->
Honeybadger.resetContext({ user_id: '2', user_name: 'Jack' })
- notice = new Honeybadger.Notice(context: { user_id: '1' })
+ notice = new Notice(context: { user_id: '1' })
expect(notice.context).toEqual({ user_id: '1', user_name: 'Jack' })
expect(Honeybadger.context).toEqual({ user_id: '2', user_name: 'Jack' })
describe '#_parseBacktrace', ->
it 'matches lines by format', ->
- #notice = new Honeybadger.Notice()
+ #notice = new Notice()
#lines = ['method (file:43:23)']
#expect(notice._parseBacktrace(lines)).toEqual([{ method: 'method', file: 'file', number: '43' }])
it 'applies [PROJECT_ROOT] filter', ->
#Honeybadger.configuration.project_root = 'http://www.project_root.foo'
- #notice = new Honeybadger.Notice()
+ #notice = new Notice()
#lines = ['method (http://www.project_root.foo/file.js:43:23)']
#expect(notice._parseBacktrace(lines)).toEqual([{ method: 'method', file: '[PROJECT_ROOT]/file.js', number: '43' }])
+ it 'skips traces in honeybadger.js'
+
describe '#toJSON()', ->
it 'is defined', ->
- notice = new Honeybadger.Notice
+ notice = new Notice
expect(notice.toJSON).toBeDefined()
describe 'error is present', ->
@@ -37,7 +43,7 @@ describe 'Notice', ->
catch e
error = e
- notice = new Honeybadger.Notice({ error: error })
+ notice = new Notice({ error: error })
output = JSON.parse(notice.toJSON())
describe 'error', ->
View
44 honeybadger.min.js
@@ -0,0 +1,44 @@
+'use strict';
+(function(){(function(){function k(m){var c,e,a,d="json"==m;if(d||"json-stringify"==m||"json-parse"==m){if("json-stringify"==m||d){if(c="function"==typeof f.stringify&&r){(a=function(){return 1}).toJSON=a;try{c="0"===f.stringify(0)&&"0"===f.stringify(new Number)&&'""'==f.stringify(new String)&&f.stringify(g)===b&&f.stringify(b)===b&&f.stringify()===b&&"1"===f.stringify(a)&&"[1]"==f.stringify([a])&&"[null]"==f.stringify([b])&&"null"==f.stringify(null)&&"[null,null,null]"==f.stringify([b,g,null])&&'{"A":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'==
+f.stringify({A:[a,!0,!1,null,"\x00\b\n\f\r\t"]})&&"1"===f.stringify(null,a)&&"[\n 1,\n 2\n]"==f.stringify([1,2],null,1)&&'"-271821-04-20T00:00:00.000Z"'==f.stringify(new Date(-864E13))&&'"+275760-09-13T00:00:00.000Z"'==f.stringify(new Date(864E13))&&'"-000001-01-01T00:00:00.000Z"'==f.stringify(new Date(-621987552E5))&&'"1969-12-31T23:59:59.999Z"'==f.stringify(new Date(-1))}catch(s){c=!1}}if(!d)return c}if("json-parse"==m||d){if("function"==typeof f.parse)try{if(0===f.parse("0")&&!f.parse(!1)&&(a=
+f.parse('{"A":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'),e=5==a.A.length&&1==a.A[0])){try{e=!f.parse('"\t"')}catch(j){}if(e)try{e=1!=f.parse("01")}catch(l){}}}catch(i){e=!1}if(!d)return e}return c&&e}}var g={}.toString,j,i,b,p="function"===typeof define&&define.amd,f=!p&&"object"==typeof exports&&exports;f||p?"object"==typeof JSON&&JSON?p?f=JSON:(f.stringify=JSON.stringify,f.parse=JSON.parse):p&&(f=this.JSON={}):f=this.JSON||(this.JSON={});var B,u,n,y,H,z,c,d,s,h,v,a,q,r=new Date(-0xc782b5b800cec),
+C,t,I;try{r=-109252==r.getUTCFullYear()&&0===r.getUTCMonth()&&1==r.getUTCDate()&&10==r.getUTCHours()&&37==r.getUTCMinutes()&&6==r.getUTCSeconds()&&708==r.getUTCMilliseconds()}catch(U){}if(!k("json")){r||(C=Math.floor,t=[0,31,59,90,120,151,181,212,243,273,304,334],I=function(m,c){return t[c]+365*(m-1970)+C((m-1969+(c=+(1<c)))/4)-C((m-1901+c)/100)+C((m-1601+c)/400)});if(!(j={}.hasOwnProperty))j=function(c){var a={},e;(a.__proto__=null,a.__proto__={toString:1},a).toString!=g?j=function(e){var c=this.__proto__,
+e=e in(this.__proto__=null,this);this.__proto__=c;return e}:(e=a.constructor,j=function(c){var a=(this.constructor||e).prototype;return c in this&&!(c in a&&this[c]===a[c])});a=null;return j.call(this,c)};i=function(c,a){var e=0,d,f,b;(d=function(){this.valueOf=0}).prototype.valueOf=0;f=new d;for(b in f)j.call(f,b)&&e++;d=f=null;e?e=2==e?function(e,c){var a={},m="[object Function]"==g.call(e),d;for(d in e)!(m&&"prototype"==d)&&(!j.call(a,d)&&(a[d]=1)&&j.call(e,d))&&c(d)}:function(e,c){var a="[object Function]"==
+g.call(e),m,d;for(m in e)!(a&&"prototype"==m)&&(j.call(e,m)&&!(d="constructor"===m))&&c(m);(d||j.call(e,m="constructor"))&&c(m)}:(f="valueOf toString toLocaleString propertyIsEnumerable isPrototypeOf hasOwnProperty constructor".split(" "),e=function(e,c){var a="[object Function]"==g.call(e),m;for(m in e)!(a&&"prototype"==m)&&j.call(e,m)&&c(m);for(a=f.length;m=f[--a];j.call(e,m)&&c(m));});return e(c,a)};k("json-stringify")||(B={"\\":"\\\\",'"':'\\"',"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"},
+u=function(c,a){return("000000"+(a||0)).slice(-c)},n=function(c){for(var a='"',e=0,d;d=c.charAt(e);e++)a+=-1<'\\"\b\f\n\r\t'.indexOf(d)?B[d]:B[d]=" ">d?"\\u00"+u(2,d.charCodeAt(0).toString(16)):d;return a+'"'},y=function(c,a,e,d,f,s,k){var l=a[c],h,v,r,q,p,B,t,D,G;if("object"==typeof l&&l)if(h=g.call(l),"[object Date]"==h&&!j.call(l,"toJSON"))if(l>-1/0&&l<1/0){if(I){r=C(l/864E5);for(h=C(r/365.2425)+1970-1;I(h+1,0)<=r;h++);for(v=C((r-I(h,0))/30.42);I(h,v+1)<=r;v++);r=1+r-I(h,v);q=(l%864E5+864E5)%864E5;
+p=C(q/36E5)%24;B=C(q/6E4)%60;t=C(q/1E3)%60;q%=1E3}else h=l.getUTCFullYear(),v=l.getUTCMonth(),r=l.getUTCDate(),p=l.getUTCHours(),B=l.getUTCMinutes(),t=l.getUTCSeconds(),q=l.getUTCMilliseconds();l=(0>=h||1E4<=h?(0>h?"-":"+")+u(6,0>h?-h:h):u(4,h))+"-"+u(2,v+1)+"-"+u(2,r)+"T"+u(2,p)+":"+u(2,B)+":"+u(2,t)+"."+u(3,q)+"Z"}else l=null;else if("function"==typeof l.toJSON&&("[object Number]"!=h&&"[object String]"!=h&&"[object Array]"!=h||j.call(l,"toJSON")))l=l.toJSON(c);e&&(l=e.call(a,c,l));if(null===l)return"null";
+h=g.call(l);if("[object Boolean]"==h)return""+l;if("[object Number]"==h)return l>-1/0&&l<1/0?""+l:"null";if("[object String]"==h)return n(l);if("object"==typeof l){for(c=k.length;c--;)if(k[c]===l)throw TypeError();k.push(l);D=[];a=s;s+=f;if("[object Array]"==h){v=0;for(c=l.length;v<c;G||(G=!0),v++)h=y(v,l,e,d,f,s,k),D.push(h===b?"null":h);c=G?f?"[\n"+s+D.join(",\n"+s)+"\n"+a+"]":"["+D.join(",")+"]":"[]"}else i(d||l,function(c){var a=y(c,l,e,d,f,s,k);a!==b&&D.push(n(c)+":"+(f?" ":"")+a);G||(G=!0)}),
+c=G?f?"{\n"+s+D.join(",\n"+s)+"\n"+a+"}":"{"+D.join(",")+"}":"{}";k.pop();return c}},f.stringify=function(c,a,e){var d,f,h,s,b,j;if("function"==typeof a||"object"==typeof a&&a)if("[object Function]"==g.call(a))f=a;else if("[object Array]"==g.call(a)){h={};s=0;for(b=a.length;s<b;j=a[s++],("[object String]"==g.call(j)||"[object Number]"==g.call(j))&&(h[j]=1));}if(e)if("[object Number]"==g.call(e)){if(0<(e-=e%1)){d="";for(10<e&&(e=10);d.length<e;d+=" ");}}else"[object String]"==g.call(e)&&(d=10>=e.length?
+e:e.slice(0,10));return y("",(j={},j[""]=c,j),f,h,d,"",[])});k("json-parse")||(H=String.fromCharCode,z={"\\":"\\",'"':'"',"/":"/",b:"\b",t:"\t",n:"\n",f:"\f",r:"\r"},c=function(){a=q=null;throw SyntaxError();},d=function(){for(var d=q,f=d.length,e,h,s,b,g;a<f;)if(e=d.charAt(a),-1<"\t\r\n ".indexOf(e))a++;else{if(-1<"{}[]:,".indexOf(e))return a++,e;if('"'==e){h="@";for(a++;a<f;)if(e=d.charAt(a)," ">e)c();else if("\\"==e)if(e=d.charAt(++a),-1<'\\"/btnfr'.indexOf(e))h+=z[e],a++;else if("u"==e){s=++a;
+for(b=a+4;a<b;a++)e=d.charAt(a),"0"<=e&&"9">=e||("a"<=e&&"f">=e||"A"<=e&&"F">=e)||c();h+=H("0x"+d.slice(s,a))}else c();else{if('"'==e)break;h+=e;a++}if('"'==d.charAt(a))return a++,h}else{s=a;"-"==e&&(g=!0,e=d.charAt(++a));if("0"<=e&&"9">=e){for("0"==e&&(e=d.charAt(a+1),"0"<=e&&"9">=e)&&c();a<f&&(e=d.charAt(a),"0"<=e&&"9">=e);a++);if("."==d.charAt(a)){for(b=++a;b<f&&(e=d.charAt(b),"0"<=e&&"9">=e);b++);b==a&&c();a=b}e=d.charAt(a);if("e"==e||"E"==e){e=d.charAt(++a);("+"==e||"-"==e)&&a++;for(b=a;b<f&&
+(e=d.charAt(b),"0"<=e&&"9">=e);b++);b==a&&c();a=b}return+d.slice(s,a)}g&&c();if("true"==d.slice(a,a+4))return a+=4,!0;if("false"==d.slice(a,a+5))return a+=5,!1;if("null"==d.slice(a,a+4))return a+=4,null}c()}return"$"},s=function(a){var h,e;"$"==a&&c();if("string"==typeof a){if("@"==a.charAt(0))return a.slice(1);if("["==a){for(h=[];;e||(e=!0)){a=d();if("]"==a)break;e&&(","==a?(a=d(),"]"==a&&c()):c());","==a&&c();h.push(s(a))}return h}if("{"==a){for(h={};;e||(e=!0)){a=d();if("}"==a)break;e&&(","==a?
+(a=d(),"}"==a&&c()):c());(","==a||"string"!=typeof a||"@"!=a.charAt(0)||":"!=d())&&c();h[a.slice(1)]=s(d())}return h}c()}return a},v=function(a,c,e){e=h(a,c,e);e===b?delete a[c]:a[c]=e},h=function(a,c,e){var d=a[c],h;if("object"==typeof d&&d)if("[object Array]"==g.call(d))for(h=d.length;h--;)v(d,h,e);else i(d,function(a){v(d,a,e)});return e.call(a,c,d)},f.parse=function(f,b){var e,j;a=0;q=f;e=s(d());"$"!=d()&&c();a=q=null;return b&&"[object Function]"==g.call(b)?h((j={},j[""]=e,j),"",b):e})}p&&define(function(){return f})}).call(this);var TraceKit={_has:function(k,g){return Object.prototype.hasOwnProperty.call(k,g)}};
+TraceKit.report=function(){function k(f,b){var g=null;if(!b||TraceKit.collectWindowErrors){for(var i in j)if(TraceKit._has(j,i))try{j[i].apply(null,[f].concat(Array.prototype.slice.call(arguments,2)))}catch(k){g=k}if(g)throw g;}}function g(f){var g=Array.prototype.slice.call(arguments,1);if(b){if(i===f)return;var j=b;i=b=null;k.apply(null,[j,null].concat(g))}var n=TraceKit.computeStackTrace(f);b=n;i=f;window.setTimeout(function(){i===f&&(i=b=null,k.apply(null,[n,null].concat(g)))},n.incomplete?2E3:
+0);throw f;}var j=[],i=null,b=null,p=window.onerror;window.onerror=function(f,g,j){var n=null;b?(TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(b,g,j,f),n=b,i=b=null):(n={url:g,line:j},n.func=TraceKit.computeStackTrace.guessFunctionName(n.url,n.line),n.context=TraceKit.computeStackTrace.gatherContext(n.url,n.line),n={mode:"onerror",message:f,url:document.location.href,stack:[n],useragent:navigator.userAgent});k(n,"from window.onerror");return p?p.apply(this,arguments):!1};g.subscribe=
+function(b){j.push(b)};g.unsubscribe=function(b){for(var g=j.length-1;0<=g;--g)j[g]===b&&j.splice(g,1)};return g}();
+TraceKit.computeStackTrace=function(){function k(c){if(!TraceKit._has(z,c)){var d;if(-1!==c.indexOf(document.domain))if(TraceKit.remoteFetching)try{var b=new ("undefined"===typeof XMLHttpRequest?function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(d){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(h){}throw Error("No XHR.");}:XMLHttpRequest);b.open("GET",c,
+!1);b.send("");d=b.responseText}catch(h){d=""}else d="";else d=[];z[c]=d.length?d.split("\n"):[]}return z[c]}function g(c,d){var b=/function ([^(]*)\(([^)]*)\)/,h=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,f="",a=k(c),g;if(!a.length)return"?";for(var j=0;10>j;++j)if(f=a[d-j]+f,void 0!==f&&((g=h.exec(f))||(g=b.exec(f))))return g[1];return"?"}function j(c,d){var b=k(c);if(!b.length)return null;for(var h=[],f=Math.floor(TraceKit.linesOfContext/2),a=f+TraceKit.linesOfContext%2,
+f=Math.max(0,d-f-1),a=Math.min(b.length,d+a-1);f<a;++f)"undefined"!==typeof b[f]&&h.push(b[f]);return 0<h.length?h:null}function i(c){return c.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function b(c){return i(c).replace("<","(?:<|&lt;)").replace(">","(?:>|&gt;)").replace("&","(?:&|&amp;)").replace('"','(?:"|&quot;)').replace(/\s+/g,"\\s+")}function p(c,d){for(var b,h,f=0,a=d.length;f<a;++f)if((b=k(d[f])).length)if(b=b.join("\n"),h=c.exec(b))return{url:d[f],line:b.substring(0,h.index).split("\n").length,
+column:h.index-b.lastIndexOf("\n",h.index)-1};return null}function f(c,d,b){var d=k(d),c=RegExp("\\b"+i(c)+"\\b"),f,b=b-1;return d&&d.length>b&&(f=c.exec(d[b]))?f.index:null}function B(c){var d=[window.location.href],f=document.getElementsByTagName("script"),c=""+c,h;for(h=0;h<f.length;++h){var g=f[h];g.src&&d.push(g.src)}(f=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/.exec(c))?(h=f[1]?"\\s+"+f[1]:"",g=f[2].split(",").join("\\s*,\\s*"),f=i(f[3]).replace(/;$/,";?"),h=
+RegExp("function"+h+"\\s*\\(\\s*"+g+"\\s*\\)\\s*{\\s*"+f+"\\s*}")):h=RegExp(i(c).replace(/\s+/g,"\\s+"));if(h=p(h,d))return h;if(f=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/.exec(c)){c=f[1];f=b(f[2]);h=RegExp("on"+c+"=[\\'\"]\\s*"+f+"\\s*[\\'\"]","i");if(h=p(h,d[0]))return h;h=RegExp(f);if(h=p(h,d))return h}return null}function u(c,d,b,h){d={url:d,line:b};if(d.url&&d.line){c.incomplete=!1;d.func||(d.func=g(d.url,d.line));d.context||(d.context=j(d.url,d.line));if(h=/ '([^']+)' /.exec(h))d.column=
+f(h[1],d.url,d.line);if(0<c.stack.length&&c.stack[0].url===d.url){if(c.stack[0].line===d.line)return!1;if(!c.stack[0].line&&c.stack[0].func===d.func)return c.stack[0].line=d.line,c.stack[0].context=d.context,!1}c.stack.unshift(d);return c.partial=!0}c.incomplete=!0;return!1}function n(c,d){for(var b=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,h=[],j={},a=!1,i,k,p=n.caller;p&&!a;p=p.caller)if(!(p===y||p===TraceKit.report)){k={url:null,func:"?",line:null,column:null};if(p.name)k.func=
+p.name;else if(i=b.exec(p.toString()))k.func=i[1];if(i=B(p)){k.url=i.url;k.line=i.line;"?"===k.func&&(k.func=g(k.url,k.line));var t=/ '([^']+)' /.exec(c.message||c.description);t&&(k.column=f(t[1],i.url,i.line))}j[""+p]?a=!0:j[""+p]=!0;h.push(k)}d&&h.splice(0,d);b={mode:"callers",name:c.name,message:c.message,url:document.location.href,stack:h,useragent:navigator.userAgent};u(b,c.sourceURL||c.fileName,c.line||c.lineNumber,c.message||c.description);return b}function y(c,d){var i=null,d=null==d?0:+d;
+try{for(var h=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,v=c.stacktrace.split("\n"),a=[],q,r=0,u=v.length;r<u;r+=2)if(q=h.exec(v[r])){var t={line:+q[1],column:+q[2],func:q[3]||q[4],args:q[5]?q[5].split(","):[],url:q[6]};!t.func&&t.line&&(t.func=g(t.url,t.line));if(t.line)try{t.context=j(t.url,t.line)}catch(y){}t.context||(t.context=[v[r+1]]);a.push(t)}i=a.length?{mode:"stacktrace",name:c.name,message:c.message,url:document.location.href,stack:a,
+useragent:navigator.userAgent}:null;if(i)return i}catch(B){if(H)throw B;}try{if(c.stack){var h=/^\s*at ((?:\[object object\])?\S+) \(((?:file|http|https):.*?):(\d+)(?::(\d+))?\)\s*$/i,v=/^\s*(\S*)(?:\((.*?)\))?@((?:file|http|https).*?):(\d+)(?::(\d+))?\s*$/i,m=c.stack.split("\n"),a=[],w,e,z=/^(.*) is undefined$/.exec(c.message);q=0;for(var K=m.length;q<K;++q){if(w=v.exec(m[q]))e={url:w[3],func:w[1],args:w[2]?w[2].split(","):"",line:+w[4],column:w[5]?+w[5]:null};else if(w=h.exec(m[q]))e={url:w[2],
+func:w[1],line:+w[3],column:w[4]?+w[4]:null};else continue;!e.func&&e.line&&(e.func=g(e.url,e.line));e.line&&(e.context=j(e.url,e.line));a.push(e)}a[0]&&(a[0].line&&!a[0].column&&z)&&(a[0].column=f(z[1],a[0].url,a[0].line));i=a.length?{mode:"stack",name:c.name,message:c.message,url:document.location.href,stack:a,useragent:navigator.userAgent}:null}else i=null;if(i)return i}catch(O){if(H)throw O;}try{var E=c.message.split("\n");if(4>E.length)i=null;else{m=/^\s*Line (\d+) of linked script ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i;
+w=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i;e=/^\s*Line (\d+) of function script\s*$/i;var z=[],l=document.getElementsByTagName("script"),K=[],A,x,L,F;for(x in l)TraceKit._has(l,x)&&!l[x].src&&K.push(l[x]);x=2;for(L=E.length;x<L;x+=2){l=null;if(A=m.exec(E[x]))l={url:A[2],func:A[3],line:+A[1]};else if(A=w.exec(E[x])){var l={url:A[3],func:A[4]},P=+A[1],M=K[A[2]-1];if(M&&(F=k(l.url))){F=F.join("\n");var N=F.indexOf(M.innerText);0<=N&&(l.line=P+F.substring(0,
+N).split("\n").length)}}else if(A=e.exec(E[x])){var D=window.location.href.replace(/#.*$/,""),G=A[1],Q=RegExp(b(E[x+1]));F=p(Q,[D]);l={url:D,line:F?F.line:G,func:""}}if(l){l.func||(l.func=g(l.url,l.line));var J=j(l.url,l.line),R=J?J[Math.floor(J.length/2)]:null;l.context=J&&R.replace(/^\s*/,"")===E[x+1].replace(/^\s*/,"")?J:[E[x+1]];z.push(l)}}i=z.length?{mode:"multiline",name:c.name,message:E[0],url:document.location.href,stack:z,useragent:navigator.userAgent}:null}if(i)return i}catch(S){if(H)throw S;
+}try{if(i=n(c,d+1))return i}catch(T){if(H)throw T;}return{mode:"failed"}}var H=!1,z={};y.augmentStackTraceWithInitialElement=u;y.guessFunctionName=g;y.gatherContext=j;y.ofCaller=function(c){try{throw Error();}catch(d){return y(d,(null==c?0:+c)+2)}};return y}();
+(function(k){var g=function(g){var i=k[g];k[g]=function(){var b=Array.prototype.slice.call(arguments,0),g=b[0];"function"===typeof g&&(b[0]=function(){try{g.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}});return i.apply?i.apply(this,b):i(b[0],b[1])}};g("setTimeout");g("setInterval")})(window);
+(function(k){if(k){var g=k.event.add;k.event.add=function(b,i,f,j,u){var n;f.handler?(n=f.handler,f.handler=function(){try{return n.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}}):(n=f,f=function(){try{return n.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}});f.guid=n.guid?n.guid:n.guid=k.guid++;return g.call(this,b,i,f,j,u)};var j=k.fn.ready;k.fn.ready=function(b){return j.call(this,function(){try{return b.apply(this,arguments)}catch(g){throw TraceKit.report(g),g;}})};
+var i=k.ajax;k.fn.ajax=function(b){if(k.isFunction(b.complete)){var g=b.complete;b.complete=function(){try{return g.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}}}if(k.isFunction(b.error)){var f=b.error;b.error=function(){try{return f.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}}}if(k.isFunction(b.success)){var j=b.success;b.success=function(){try{return j.apply(this,arguments)}catch(b){throw TraceKit.report(b),b;}}}try{return i.call(this,b)}catch(u){throw TraceKit.report(u),
+u;}}}})(window.jQuery);TraceKit.remoteFetching||(TraceKit.remoteFetching=!0);TraceKit.collectWindowErrors||(TraceKit.collectWindowErrors=!0);if(!TraceKit.linesOfContext||1>TraceKit.linesOfContext)TraceKit.linesOfContext=11;var Notice,notice={};
+Notice=function(){function k(g){var j,i,b,k;this.options=null!=g?g:{};this.stackInfo=this.options.stackInfo||this.options.error&&TraceKit.computeStackTrace(this.options.error);this.trace=this._parseBacktrace(null!=(i=this.stackInfo)?i.stack:void 0);this["class"]=null!=(b=this.stackInfo)?b.name:void 0;this.message=null!=(k=this.stackInfo)?k.message:void 0;this.url=document.URL;this.project_root=Honeybadger.configuration.project_root;this.environment=Honeybadger.configuration.environment;this.component=
+Honeybadger.configuration.component;this.action=Honeybadger.configuration.action;this.context={};i=Honeybadger.context;for(j in i)g=i[j],this.context[j]=g;if(this.options.context)for(j in i=this.options.context,i)g=i[j],this.context[j]=g}k.prototype.toJSON=function(){return JSON.stringify({notifier:{name:"honeybadger.js",url:"https://github.com/honeybadger-io/honeybadger-js",version:Honeybadger.version},error:{"class":this["class"],message:this.message,backtrace:this.trace},request:{url:this.url,
+component:this.component,action:this.action,context:this.context},server:{project_root:this.project_root,environment_name:this.environment}})};k.prototype._parseBacktrace=function(g){var j,i,b,k;null==g&&(g=[]);j=[];b=0;for(k=g.length;b<k;b++)i=g[b],i.url.match(/honeybadger\.js/)||j.push({file:i.url.replace(Honeybadger.configuration.project_root,"[PROJECT_ROOT]"),number:i.line,method:i.func});return j};return k}();var Honeybadger,honeybadger={};
+Honeybadger=function(){function k(){}k.version="0.0.1";TraceKit.report.subscribe(function(g){return k.notify(null,{stackInfo:g})});k.default_configuration={api_key:null,host:"api.honeybadger.io",ssl:!0,project_root:window.location.protocol+"//"+window.location.host,environment:"production",component:null,action:null};k.configure=function(g){var j,i;null==g&&(g={});for(j in g)i=g[j],this.configuration[j]=i;return this};k.configuration={reset:function(){return k.configure(k.default_configuration)}};k.configuration.reset();
+k.context={};k.resetContext=function(g){null==g&&(g={});this.context=g;return this};k.setContext=function(g){var j,i;null==g&&(g={});for(j in g)i=g[j],this.context[j]=i;return this};k.notify=function(g,j){var i;null==j&&(j={});g&&(j.error=g);i=new Notice(j);return this._sendRequest(i.toJSON())};k._sendRequest=function(g){return this._crossDomainPost("http"+(this.configuration.ssl&&"s"||"")+"://"+this.configuration.host+"/v1/notices",g)};k._crossDomainPost=function(g,j){var i,b;i=document.createElement("iframe");
+b="_hb_"+(new Date).getTime();document.body.appendChild(i);i.style.display="none";i.contentWindow.name=b;i=document.createElement("form");i.target=b;i.action=g;i.method="POST";b=document.createElement("input");b.type="hidden";b.name="payload";b.value=j;i.appendChild(b);document.body.appendChild(i);b=document.createElement("input");b.type="hidden";b.name="api_key";b.value=this.configuration.api_key;i.appendChild(b);document.body.appendChild(i);return i.submit()};return k}.call(this);
+("undefined"!==typeof exports&&null!==exports?exports:this).Honeybadger=Honeybadger;}).call(this);
+
+//@ sourceMappingURL=honeybadger.min.js.map
View
349 honeybadger.min.js.map
@@ -0,0 +1,349 @@
+{
+ "file": "honeybadger.min.js",
+ "lineCount": 42,
+ "mappings": "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",
+ "names": [
+ "has",
+ "name",
+ "stringifySupported",
+ "parseSupported",
+ "value",
+ "all",
+ "JSON3",
+ "stringify",
+ "isExtended",
+ "toJSON",
+ "Number",
+ "String",
+ "getClass",
+ "undef",
+ "serialized",
+ "Date",
+ "exception",
+ "parse",
+ "A",
+ "length",
+ "toString",
+ "isProperty",
+ "forEach",
+ "isLoader",
+ "define",
+ "amd",
+ "exports",
+ "JSON",
+ "Escapes",
+ "toPaddedString",
+ "quote",
+ "serialize",
+ "fromCharCode",
+ "Unescapes",
+ "abort",
+ "lex",
+ "get",
+ "walk",
+ "update",
+ "Index",
+ "Source",
+ "floor",
+ "Months",
+ "getDay",
+ "getUTCFullYear",
+ "getUTCMonth",
+ "getUTCDate",
+ "getUTCHours",
+ "getUTCMinutes",
+ "getUTCSeconds",
+ "getUTCMilliseconds",
+ "Math",
+ "year",
+ "month",
+ "hasOwnProperty",
+ "property",
+ "members",
+ "constructor",
+ "__proto__",
+ "original",
+ "result",
+ "parent",
+ "prototype",
+ "call",
+ "object",
+ "callback",
+ "size",
+ "Properties",
+ "valueOf",
+ "isFunction",
+ "isConstructor",
+ "width",
+ "slice",
+ "index",
+ "symbol",
+ "charAt",
+ "indexOf",
+ "charCodeAt",
+ "properties",
+ "whitespace",
+ "indentation",
+ "stack",
+ "className",
+ "date",
+ "time",
+ "hours",
+ "minutes",
+ "seconds",
+ "results",
+ "any",
+ "milliseconds",
+ "TypeError",
+ "push",
+ "prefix",
+ "element",
+ "join",
+ "pop",
+ "JSON3.stringify",
+ "source",
+ "filter",
+ "SyntaxError",
+ "begin",
+ "position",
+ "sign",
+ "JSON3.parse",
+ "TraceKit",
+ "TraceKit._has",
+ "key",
+ "Object",
+ "report",
+ "reportModuleWrapper",
+ "notifyHandlers",
+ "windowError",
+ "collectWindowErrors",
+ "i",
+ "handlers",
+ "_has",
+ "apply",
+ "concat",
+ "Array",
+ "arguments",
+ "inner",
+ "ex",
+ "args",
+ "lastExceptionStack",
+ "lastException",
+ "s",
+ "computeStackTrace",
+ "window",
+ "setTimeout",
+ "incomplete",
+ "_oldOnerrorHandler",
+ "onerror",
+ "window.onerror",
+ "message",
+ "url",
+ "lineNo",
+ "augmentStackTraceWithInitialElement",
+ "location",
+ "func",
+ "guessFunctionName",
+ "line",
+ "context",
+ "gatherContext",
+ "document",
+ "href",
+ "navigator",
+ "userAgent",
+ "subscribe",
+ "handler",
+ "unsubscribe",
+ "splice",
+ "computeStackTraceWrapper",
+ "getSource",
+ "sourceCache",
+ "domain",
+ "remoteFetching",
+ "request",
+ "XMLHttpRequestWrapper",
+ "XMLHttpRequest",
+ "ActiveXObject",
+ "e",
+ "Error",
+ "open",
+ "send",
+ "responseText",
+ "split",
+ "reFunctionArgNames",
+ "reGuessFunction",
+ "m",
+ "maxLines",
+ "undefined",
+ "exec",
+ "linesBefore",
+ "linesOfContext",
+ "linesAfter",
+ "start",
+ "max",
+ "end",
+ "min",
+ "escapeRegExp",
+ "text",
+ "replace",
+ "escapeCodeAsRegExpForMatchingInsideHTML",
+ "body",
+ "findSourceInUrls",
+ "re",
+ "urls",
+ "j",
+ "substring",
+ "lastIndexOf",
+ "findSourceInLine",
+ "fragment",
+ "RegExp",
+ "findSourceByFunctionBody",
+ "scripts",
+ "getElementsByTagName",
+ "code",
+ "script",
+ "src",
+ "parts",
+ "codeRE",
+ "eventRE",
+ "event",
+ "stackInfo",
+ "initial",
+ "reference",
+ "column",
+ "unshift",
+ "partial",
+ "computeStackTraceByWalkingCallerChain",
+ "depth",
+ "functionName",
+ "funcs",
+ "recursion",
+ "item",
+ "curr",
+ "caller",
+ "description",
+ "sourceURL",
+ "fileName",
+ "lineNumber",
+ "testRE",
+ "lines",
+ "stacktrace",
+ "exc",
+ "debug",
+ "chrome",
+ "gecko",
+ "lineRE1",
+ "lineRE2",
+ "lineRE3",
+ "inlineScriptBlocks",
+ "len",
+ "relativeLine",
+ "pos",
+ "innerText",
+ "midline",
+ "ofCaller",
+ "computeStackTraceOfCaller",
+ "extendToAsynchronousCallbacks",
+ "w",
+ "_helper",
+ "fnName",
+ "originalFn",
+ "originalCallback",
+ "traceKitAsyncForjQuery",
+ "$",
+ "_oldEventAdd",
+ "add",
+ "$.event.add",
+ "elem",
+ "types",
+ "data",
+ "selector",
+ "_handler",
+ "handler.handler",
+ "guid",
+ "_oldReady",
+ "fn",
+ "ready",
+ "$.fn.ready",
+ "_fn",
+ "_oldAjax",
+ "ajax",
+ "$.fn.ajax",
+ "complete",
+ "_oldComplete",
+ "s.complete",
+ "error",
+ "_oldError",
+ "s.error",
+ "success",
+ "_oldSuccess",
+ "s.success",
+ "jQuery",
+ "Notice",
+ "options",
+ "k",
+ "_ref",
+ "_ref1",
+ "_ref2",
+ "trace",
+ "_parseBacktrace",
+ "URL",
+ "project_root",
+ "Honeybadger",
+ "configuration",
+ "environment",
+ "component",
+ "action",
+ "_ref3",
+ "v",
+ "_ref4",
+ "Notice.prototype.toJSON",
+ "version",
+ "Notice.prototype._parseBacktrace",
+ "backtrace",
+ "_i",
+ "_len",
+ "match",
+ "notify",
+ "default_configuration",
+ "protocol",
+ "host",
+ "configure",
+ "Honeybadger.configure",
+ "reset",
+ "resetContext",
+ "Honeybadger.resetContext",
+ "setContext",
+ "Honeybadger.setContext",
+ "Honeybadger.notify",
+ "notice",
+ "_sendRequest",
+ "Honeybadger._sendRequest",
+ "_crossDomainPost",
+ "ssl",
+ "Honeybadger._crossDomainPost",
+ "payload",
+ "form",
+ "input",
+ "iframe",
+ "createElement",
+ "uniqueNameOfFrame",
+ "getTime",
+ "appendChild",
+ "style",
+ "display",
+ "contentWindow",
+ "target",
+ "method",
+ "type",
+ "api_key",
+ "submit"
+ ],
+ "sources": [
+ "/js/vendor/json3.js",
+ "/js/vendor/tracekit.js",
+ "/js/src/notice.js",
+ "/js/src/honeybadger.js"
+ ],
+ "version": 3
+}
1  lib/closure/library
@@ -0,0 +1 @@
+Subproject commit 9d5c230d74c2ba1e4843d3d77e2ab2e4db8b4ffc
View
36 package.json
@@ -0,0 +1,36 @@
+{
+ "name": "projectname",
+ "description": "project description",
+ "version": "0.0.1",
+ "homepage": "https://github.com/<username>/<reponame>",
+ "author": {
+ "name": "<full name>",
+ "email": "<email>"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/<username>/<reponame>.git"
+ },
+ "bugs": {
+ "url": "https://github.com/<username>/<reponame>/issues"
+ },
+ "scripts": {
+ "test": "grunt --config Gruntfile.coffee test"
+ },
+ "devDependencies": {
+ "grunt": "~0.3.17",
+ "grunt-coffee": "0.0.6",
+ "grunt-contrib-clean": "~0.3.1",
+ "grunt-closure-tools": "0.6.11",
+ "grunt-jasmine-runner": "~0.6.0",
+ "grunt-jasmine-spec-server": "0.0.2",
+ "coffee-script": "~1.3.3",
+ "phantomjs": "~0.2.3",
+ "underscore": "~1.4.3",
+ "grunt-exec": "~0.3.0",
+ "grunt-cli": "~0.1.2",
+ "grunt-contrib-copy": "~0.3.2",
+ "json3": "~3.2.4"
+ },
+ "readmeFilename": "README.md"
+}
View
14 spec/javascripts/support/jasmine.yml
@@ -1,14 +0,0 @@
-src_files:
- - '__vendor__/tracekit.js'
- - 'honeybadger.js'
- - 'notice.js'
-
-helpers:
- - 'support/**/*.js'
-
-spec_files:
- - '**/*_spec.js'
-
-src_dir: 'js'
-
-spec_dir: 'spec/javascripts'
View
486 vendor/json2.js
@@ -1,486 +0,0 @@
-/*
- json2.js
- 2012-10-08
-
- Public Domain.
-
- NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
- See http://www.JSON.org/js.html
-
-
- This code should be minified before deployment.
- See http://javascript.crockford.com/jsmin.html
-
- USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
- NOT CONTROL.
-
-
- This file creates a global JSON object containing two methods: stringify
- and parse.
-
- JSON.stringify(value, replacer, space)
- value any JavaScript value, usually an object or array.
-
- replacer an optional parameter that determines how object
- values are stringified for objects. It can be a
- function or an array of strings.
-
- space an optional parameter that specifies the indentation
- of nested structures. If it is omitted, the text will
- be packed without extra whitespace. If it is a number,
- it will specify the number of spaces to indent at each
- level. If it is a string (such as '\t' or '&nbsp;'),
- it contains the characters used to indent at each level.
-
- This method produces a JSON text from a JavaScript value.
-
- When an object value is found, if the object contains a toJSON
- method, its toJSON method will be called and the result will be
- stringified. A toJSON method does not serialize: it returns the
- value represented by the name/value pair that should be serialized,
- or undefined if nothing should be serialized. The toJSON method
- will be passed the key associated with the value, and this will be
- bound to the value
-
- For example, this would serialize Dates as ISO strings.
-
- Date.prototype.toJSON = function (key) {
- function f(n) {
- // Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
- }
-
- return this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z';
- };
-
- You can provide an optional replacer method. It will be passed the
- key and value of each member, with this bound to the containing
- object. The value that is returned from your method will be
- serialized. If your method returns undefined, then the member will
- be excluded from the serialization.
-
- If the replacer parameter is an array of strings, then it will be
- used to select the members to be serialized. It filters the results
- such that only members with keys listed in the replacer array are
- stringified.
-
- Values that do not have JSON representations, such as undefined or
- functions, will not be serialized. Such values in objects will be
- dropped; in arrays they will be replaced with null. You can use
- a replacer function to replace those with JSON values.
- JSON.stringify(undefined) returns undefined.
-
- The optional space parameter produces a stringification of the
- value that is filled with line breaks and indentation to make it
- easier to read.
-
- If the space parameter is a non-empty string, then that string will
- be used for indentation. If the space parameter is a number, then
- the indentation will be that many spaces.
-
- Example:
-
- text = JSON.stringify(['e', {pluribus: 'unum'}]);
- // text is '["e",{"pluribus":"unum"}]'
-
-
- text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
- // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
-
- text = JSON.stringify([new Date()], function (key, value) {
- return this[key] instanceof Date ?
- 'Date(' + this[key] + ')' : value;
- });
- // text is '["Date(---current time---)"]'
-
-
- JSON.parse(text, reviver)
- This method parses a JSON text to produce an object or array.
- It can throw a SyntaxError exception.
-
- The optional reviver parameter is a function that can filter and
- transform the results. It receives each of the keys and values,
- and its return value is used instead of the original value.
- If it returns what it received, then the structure is not modified.
- If it returns undefined then the member is deleted.
-
- Example:
-
- // Parse the text. Values that look like ISO date strings will
- // be converted to Date objects.
-
- myData = JSON.parse(text, function (key, value) {
- var a;
- if (typeof value === 'string') {
- a =
-/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
- if (a) {
- return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
- +a[5], +a[6]));
- }
- }
- return value;
- });
-
- myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
- var d;
- if (typeof value === 'string' &&
- value.slice(0, 5) === 'Date(' &&
- value.slice(-1) === ')') {
- d = new Date(value.slice(5, -1));
- if (d) {
- return d;
- }
- }
- return value;
- });
-
-
- This is a reference implementation. You are free to copy, modify, or
- redistribute.
-*/
-
-/*jslint evil: true, regexp: true */
-
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
- call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
- getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
- lastIndex, length, parse, prototype, push, replace, slice, stringify,
- test, toJSON, toString, valueOf
-*/
-
-
-// Create a JSON object only if one does not already exist. We create the
-// methods in a closure to avoid creating global variables.
-
-if (typeof JSON !== 'object') {
- JSON = {};
-}
-
-(function () {
- 'use strict';
-
- function f(n) {
- // Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
- }
-
- if (typeof Date.prototype.toJSON !== 'function') {
-
- Date.prototype.toJSON = function (key) {
-
- return isFinite(this.valueOf())
- ? this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z'
- : null;
- };
-
- String.prototype.toJSON =
- Number.prototype.toJSON =
- Boolean.prototype.toJSON = function (key) {
- return this.valueOf();
- };
- }
-
- var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- gap,
- indent,
- meta = { // table of character substitutions
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- },
- rep;
-
-
- function quote(string) {
-
-// If the string contains no control characters, no quote characters, and no
-// backslash characters, then we can safely slap some quotes around it.
-// Otherwise we must also replace the offending characters with safe escape
-// sequences.
-
- escapable.lastIndex = 0;
- return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
- var c = meta[a];
- return typeof c === 'string'
- ? c
- : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' : '"' + string + '"';
- }
-
-
- function str(key, holder) {
-
-// Produce a string from holder[key].
-
- var i, // The loop counter.
- k, // The member key.
- v, // The member value.
- length,
- mind = gap,
- partial,
- value = holder[key];
-
-// If the value has a toJSON method, call it to obtain a replacement value.
-
- if (value && typeof value === 'object' &&
- typeof value.toJSON === 'function') {
- value = value.toJSON(key);
- }
-
-// If we were called with a replacer function, then call the replacer to
-// obtain a replacement value.
-
- if (typeof rep === 'function') {
- value = rep.call(holder, key, value);
- }
-
-// What happens next depends on the value's type.
-
- switch (typeof value) {
- case 'string':
- return quote(value);
-
- case 'number':
-
-// JSON numbers must be finite. Encode non-finite numbers as null.
-
- return isFinite(value) ? String(value) : 'null';
-
- case 'boolean':
- case 'null':
-
-// If the value is a boolean or null, convert it to a string. Note:
-// typeof null does not produce 'null'. The case is included here in
-// the remote chance that this gets fixed someday.
-
- return String(value);
-
-// If the type is 'object', we might be dealing with an object or an array or
-// null.
-
- case 'object':
-
-// Due to a specification blunder in ECMAScript, typeof null is 'object',
-// so watch out for that case.
-
- if (!value) {
- return 'null';
- }
-
-// Make an array to hold the partial results of stringifying this object value.
-
- gap += indent;
- partial = [];
-
-// Is the value an array?
-
- if (Object.prototype.toString.apply(value) === '[object Array]') {
-
-// The value is an array. Stringify every element. Use null as a placeholder
-// for non-JSON values.
-
- length = value.length;
- for (i = 0; i < length; i += 1) {
- partial[i] = str(i, value) || 'null';
- }
-
-// Join all of the elements together, separated with commas, and wrap them in
-// brackets.
-
- v = partial.length === 0
- ? '[]'
- : gap
- ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
- : '[' + partial.join(',') + ']';
- gap = mind;
- return v;
- }
-
-// If the replacer is an array, use it to select the members to be stringified.
-
- if (rep && typeof rep === 'object') {
- length = rep.length;
- for (i = 0; i < length; i += 1) {
- if (typeof rep[i] === 'string') {
- k = rep[i];
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- } else {
-
-// Otherwise, iterate through all of the keys in the object.
-
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- }
-
-// Join all of the member texts together, separated with commas,
-// and wrap them in braces.
-
- v = partial.length === 0
- ? '{}'
- : gap
- ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
- : '{' + partial.join(',') + '}';
- gap = mind;
- return v;
- }
- }
-
-// If the JSON object does not yet have a stringify method, give it one.
-
- if (typeof JSON.stringify !== 'function') {
- JSON.stringify = function (value, replacer, space) {
-
-// The stringify method takes a value and an optional replacer, and an optional
-// space parameter, and returns a JSON text. The replacer can be a function
-// that can replace values, or an array of strings that will select the keys.
-// A default replacer method can be provided. Use of the space parameter can
-// produce text that is more easily readable.
-
- var i;
- gap = '';
- indent = '';
-
-// If the space parameter is a number, make an indent string containing that
-// many spaces.
-
- if (typeof space === 'number') {
- for (i = 0; i < space; i += 1) {
- indent += ' ';
- }
-
-// If the space parameter is a string, it will be used as the indent string.
-
- } else if (typeof space === 'string') {
- indent = space;
- }
-
-// If there is a replacer, it must be a function or an array.
-// Otherwise, throw an error.
-
- rep = replacer;
- if (replacer && typeof replacer !== 'function' &&
- (typeof replacer !== 'object' ||
- typeof replacer.length !== 'number')) {
- throw new Error('JSON.stringify');
- }
-
-// Make a fake root object containing our value under the key of ''.
-// Return the result of stringifying the value.
-
- return str('', {'': value});
- };
- }
-
-
-// If the JSON object does not yet have a parse method, give it one.
-
- if (typeof JSON.parse !== 'function') {
- JSON.parse = function (text, reviver) {
-
-// The parse method takes a text and an optional reviver function, and returns
-// a JavaScript value if the text is a valid JSON text.
-
- var j;
-
- function walk(holder, key) {
-
-// The walk method is used to recursively walk the resulting structure so
-// that modifications can be made.
-
- var k, v, value = holder[key];
- if (value && typeof value === 'object') {
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== undefined) {
- value[k] = v;
- } else {
- delete value[k];
- }
- }
- }
- }
- return reviver.call(holder, key, value);
- }
-
-
-// Parsing happens in four stages. In the first stage, we replace certain
-// Unicode characters with escape sequences. JavaScript handles many characters
-// incorrectly, either silently deleting them, or treating them as line endings.
-
- text = String(text);
- cx.lastIndex = 0;
- if (cx.test(text)) {
- text = text.replace(cx, function (a) {
- return '\\u' +
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- });
- }
-
-// In the second stage, we run the text against regular expressions that look
-// for non-JSON patterns. We are especially concerned with '()' and 'new'
-// because they can cause invocation, and '=' because it can cause mutation.
-// But just to be safe, we want to reject all unexpected forms.
-
-// We split the second stage into 4 regexp operations in order to work around
-// crippling inefficiencies in IE's and Safari's regexp engines. First we
-// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
-// replace all simple value tokens with ']' characters. Third, we delete all
-// open brackets that follow a colon or comma or that begin the text. Finally,
-// we look to see that the remaining characters are only whitespace or ']' or
-// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
-
- if (/^[\],:{}\s]*$/
- .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
-
-// In the third stage we use the eval function to compile the text into a
-// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
-// in JavaScript: it can begin a block or an object literal. We wrap the text
-// in parens to eliminate the ambiguity.
-
- j = eval('(' + text + ')');
-
-// In the optional fourth stage, we recursively walk the new structure, passing
-// each name/value pair to a reviver function for possible transformation.
-
- return typeof reviver === 'function'
- ? walk({'': j}, '')
- : j;
- }
-
-// If the text is not JSON parseable, then a SyntaxError is thrown.
-
- throw new SyntaxError('JSON.parse');
- };
- }
-}());
Please sign in to comment.
Something went wrong with that request. Please try again.