squash_javascript 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/README.md +1 -1
- data/bin/upload_source_map +1 -1
- data/lib/squash/javascript/engine.rb +1 -1
- data/lib/squash/javascript/source_map.rb +2 -2
- data/lib/squash/javascript.rb +1 -1
- data/vendor/assets/javascripts/squash_javascript/client.coffee +20 -15
- data/vendor/assets/javascripts/squash_javascript/index.js +1 -1
- data/vendor/assets/javascripts/squash_javascript/tracekit.js +9 -6
- data/vendor/assets/javascripts/squash_javascript.min.js +24 -24
- data/vendor/assets/javascripts/squash_javascript.orig.js +26 -17
- metadata +9 -26
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            !binary "U0hBMQ==":
         | 
| 3 | 
            +
              metadata.gz: !binary |-
         | 
| 4 | 
            +
                Yzg2ZTI5ZWVkNzI4NmQ4NzQ3MzA5OTc4ZGJlNGE0OGNjZDdlMGY4Yw==
         | 
| 5 | 
            +
              data.tar.gz: !binary |-
         | 
| 6 | 
            +
                NWVkMTA3NTMzYTQyZDExYjlmMDdiNzNmNDJhM2IzMTgxNjYzMmM4NA==
         | 
| 7 | 
            +
            SHA512:
         | 
| 8 | 
            +
              metadata.gz: !binary |-
         | 
| 9 | 
            +
                NGU0MmQ1MDc5MjNjNTYzNDlkZmY2Mzk0NmRhNWQwNGEwMDRkOWQ5ZTBmNGVl
         | 
| 10 | 
            +
                OWI3ZTkyZDgyMmMzNjg1OTdjMGI0NTc5OWIwMzdlMGNmMzQ1OGMwMGZjZjI1
         | 
| 11 | 
            +
                ODc0MjE1NzA0NjkwMmU2ZGM5YjAzZjAyNmI0ZDAxYTRjMzEwYmI=
         | 
| 12 | 
            +
              data.tar.gz: !binary |-
         | 
| 13 | 
            +
                MzhkODM0MzVmNjM0YmI4NTE2NmRmNzcxODZmOTVhODU1NmUzZmI1NjkwNmRj
         | 
| 14 | 
            +
                NDA0ZjQxOWE0NmM0NmVlZDBmNzZlM2EwMGEwMzJhZDk2ODk1YTIwOWI0ZDgz
         | 
| 15 | 
            +
                ODNlNzkzNzNiMWZkOTk2MDNkNjU5Y2ZhYjBlZWU1NmE5NWQ3OTk=
         | 
    
        data/README.md
    CHANGED
    
    | @@ -22,7 +22,7 @@ install with `rake setup`. | |
| 22 22 |  | 
| 23 23 | 
             
            ### Ruby library
         | 
| 24 24 |  | 
| 25 | 
            -
            Markdown-formatted YARD documentation is available by running  | 
| 25 | 
            +
            Markdown-formatted YARD documentation is available by running `rake doc:ruby`.
         | 
| 26 26 | 
             
            The documentation is written to the `doc/ruby` directory.
         | 
| 27 27 |  | 
| 28 28 | 
             
            Compatibility
         | 
    
        data/bin/upload_source_map
    CHANGED
    
    
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            # Copyright  | 
| 1 | 
            +
            # Copyright 2013 Square Inc.
         | 
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            #    Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 4 4 | 
             
            #    you may not use this file except in compliance with the License.
         | 
| @@ -97,7 +97,7 @@ class Squash::Javascript::SourceMap | |
| 97 97 | 
             
                while index < mappings.length
         | 
| 98 98 | 
             
                  entry = mappings[index]
         | 
| 99 99 | 
             
                  mapping = entry if entry.route == route && entry.compiled_line == line && entry.compiled_column <= column
         | 
| 100 | 
            -
                  break if entry.route > route || entry.compiled_line > line
         | 
| 100 | 
            +
                  break if entry.route > route || (entry.route == route && entry.compiled_line > line)
         | 
| 101 101 | 
             
                  index += 1
         | 
| 102 102 | 
             
                end
         | 
| 103 103 |  | 
    
        data/lib/squash/javascript.rb
    CHANGED
    
    
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            # Copyright  | 
| 1 | 
            +
            # Copyright 2013 Square Inc.
         | 
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            #    Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 4 4 | 
             
            #    you may not use this file except in compliance with the License.
         | 
| @@ -29,7 +29,7 @@ class root.SquashJavascript | |
| 29 29 | 
             
            class _SquashJavascript
         | 
| 30 30 | 
             
              # @private
         | 
| 31 31 | 
             
              constructor: ->
         | 
| 32 | 
            -
                TraceKit.report.subscribe (error) -> SquashJavascript.instance().report(error)
         | 
| 32 | 
            +
                TraceKit.report.subscribe (info, error) -> SquashJavascript.instance().report(info, error)
         | 
| 33 33 |  | 
| 34 34 | 
             
              # Sets configuration options. See the README file for a list of accepted
         | 
| 35 35 | 
             
              # configuration options. Multiple calls will merge new options in.
         | 
| @@ -55,15 +55,17 @@ class _SquashJavascript | |
| 55 55 | 
             
              # installs a listener that notifies the server for thrown exceptions.
         | 
| 56 56 | 
             
              #
         | 
| 57 57 | 
             
              # @param [Error] error The error to record.
         | 
| 58 | 
            +
              # @param [Object] user_data Additional user data to send up with the error.
         | 
| 58 59 | 
             
              #
         | 
| 59 | 
            -
              notify: (error) ->
         | 
| 60 | 
            +
              notify: (error, user_data) ->
         | 
| 60 61 | 
             
                if error instanceof Error
         | 
| 62 | 
            +
                  error._squash_user_data = user_data
         | 
| 61 63 | 
             
                  TraceKit.report(error)
         | 
| 62 64 | 
             
                else
         | 
| 63 65 | 
             
                  throw error
         | 
| 64 66 |  | 
| 65 67 | 
             
              # @private
         | 
| 66 | 
            -
              report: (error) ->
         | 
| 68 | 
            +
              report: (info, error) ->
         | 
| 67 69 | 
             
                try
         | 
| 68 70 | 
             
                  return false if @options?.disabled
         | 
| 69 71 | 
             
                  if !@options?.APIKey || !@options?.environment ||
         | 
| @@ -71,28 +73,28 @@ class _SquashJavascript | |
| 71 73 | 
             
                    console.error "Missing required Squash configuration keys"
         | 
| 72 74 | 
             
                    return false
         | 
| 73 75 |  | 
| 74 | 
            -
                  return false if this.shouldIgnoreError( | 
| 75 | 
            -
                  return false unless  | 
| 76 | 
            +
                  return false if this.shouldIgnoreError(info)
         | 
| 77 | 
            +
                  return false unless info.stack
         | 
| 76 78 |  | 
| 77 | 
            -
                  fields =  | 
| 79 | 
            +
                  fields = new Object()
         | 
| 78 80 | 
             
                  fields.api_key = @options.APIKey
         | 
| 79 81 | 
             
                  fields.environment = @options.environment
         | 
| 80 82 | 
             
                  fields.client = "javascript"
         | 
| 81 83 | 
             
                  fields.revision = @options.revision
         | 
| 82 84 |  | 
| 83 | 
            -
                  fields.class_name =  | 
| 85 | 
            +
                  fields.class_name = info.type ? info.name
         | 
| 84 86 | 
             
                  # errors that make it up to window.onerror get stupidly rewritten: their
         | 
| 85 87 | 
             
                  # class is set to "Error" and the ACTUAL class is integrated into the
         | 
| 86 88 | 
             
                  # message (e.g., "Uncaught TypeError: [message]")
         | 
| 87 | 
            -
                  if ! | 
| 89 | 
            +
                  if !info.name && (matches = info.message.match(/^(Uncaught )?(\w+): (.+)/))
         | 
| 88 90 | 
             
                    fields.class_name = matches[2]
         | 
| 89 91 | 
             
                    fields.message = matches[3]
         | 
| 90 92 | 
             
                  else
         | 
| 91 | 
            -
                    fields.message =  | 
| 93 | 
            +
                    fields.message = info.message
         | 
| 92 94 | 
             
                  fields.class_name ?= 'Error' # when all else fails
         | 
| 93 95 |  | 
| 94 | 
            -
                  fields.backtraces = buildBacktrace( | 
| 95 | 
            -
                  fields.capture_method =  | 
| 96 | 
            +
                  fields.backtraces = buildBacktrace(info.stack)
         | 
| 97 | 
            +
                  fields.capture_method = info.mode
         | 
| 96 98 | 
             
                  fields.occurred_at = ISODateString(new Date())
         | 
| 97 99 |  | 
| 98 100 | 
             
                  fields.schema = window.location.protocol.replace(/:$/, '')
         | 
| @@ -110,6 +112,9 @@ class _SquashJavascript | |
| 110 112 | 
             
                  fields.window_height = window.innerHeight
         | 
| 111 113 | 
             
                  fields.color_depth = screen.colorDepth
         | 
| 112 114 |  | 
| 115 | 
            +
                  if error
         | 
| 116 | 
            +
                    (fields[k] = v for own k, v of error._squash_user_data)
         | 
| 117 | 
            +
             | 
| 113 118 | 
             
                  body = JSON.stringify(fields)
         | 
| 114 119 | 
             
                  this.HTTPTransmit (@options.APIHost + @options.notifyPath),
         | 
| 115 120 | 
             
                      [ ['Content-Type', 'application/json'] ],
         | 
| @@ -118,7 +123,7 @@ class _SquashJavascript | |
| 118 123 | 
             
                  return true
         | 
| 119 124 | 
             
                catch internal_error
         | 
| 120 125 | 
             
                  console.error "Error while trying to notify Squash:", internal_error.stack
         | 
| 121 | 
            -
                  console.error "-- original error:",  | 
| 126 | 
            +
                  console.error "-- original error:", info
         | 
| 122 127 |  | 
| 123 128 | 
             
              # Runs the given `block`. If an exception is thrown within the function, adds
         | 
| 124 129 | 
             
              # the given user data to the exception and re-throws it.
         | 
| @@ -173,8 +178,8 @@ class _SquashJavascript | |
| 173 178 | 
             
              # @private
         | 
| 174 179 | 
             
              HTTPTransmit: (url, headers, body) ->
         | 
| 175 180 | 
             
                request = new XMLHttpRequest()
         | 
| 176 | 
            -
                request.timeout = @options.transmitTimeout
         | 
| 177 181 | 
             
                request.open "POST", url, true
         | 
| 182 | 
            +
                request.timeout = @options.transmitTimeout
         | 
| 178 183 | 
             
                for header in headers
         | 
| 179 184 | 
             
                  request.setRequestHeader header[0], header[1]
         | 
| 180 185 | 
             
                request.send body
         | 
| @@ -197,7 +202,7 @@ class _SquashJavascript | |
| 197 202 | 
             
                backtraces = []
         | 
| 198 203 | 
             
                for line in stack
         | 
| 199 204 | 
             
                  context = line.context
         | 
| 200 | 
            -
                  context = null if context && any(context, (cline) -> cline.length > 200)
         | 
| 205 | 
            +
                  context = null if context && any(context, (cline) -> cline && cline.length > 200)
         | 
| 201 206 | 
             
                  backtraces.push {url: line.url, line: line.line, column: line.column, symbol: line.func, context: context, type: 'minified'}
         | 
| 202 207 | 
             
                return [ {name: "Active Thread", faulted: true, backtrace: backtraces} ]
         | 
| 203 208 |  | 
| @@ -74,13 +74,14 @@ TraceKit.report = (function () { | |
| 74 74 | 
             
            	/**
         | 
| 75 75 | 
             
            	 * Dispatch stack information to all handlers.
         | 
| 76 76 | 
             
            	 * @param {Object.<string, *>} stack
         | 
| 77 | 
            +
               * @param {Error} e
         | 
| 77 78 | 
             
            	 */
         | 
| 78 | 
            -
            	function notifyHandlers(stack) {
         | 
| 79 | 
            +
            	function notifyHandlers(stack, e) {
         | 
| 79 80 | 
             
            		var exception = null;
         | 
| 80 81 | 
             
            		for (var i in handlers) {
         | 
| 81 82 | 
             
            			if (handlers.hasOwnProperty(i)) {
         | 
| 82 83 | 
             
            				try {
         | 
| 83 | 
            -
            					handlers[i](stack);
         | 
| 84 | 
            +
            					handlers[i](stack, e);
         | 
| 84 85 | 
             
            				}
         | 
| 85 86 | 
             
            				catch (inner) {
         | 
| 86 87 | 
             
            					exception = inner;
         | 
| @@ -105,10 +106,12 @@ TraceKit.report = (function () { | |
| 105 106 | 
             
            	 */
         | 
| 106 107 | 
             
            	window.onerror = function (message, url, lineNo) {
         | 
| 107 108 | 
             
            		var stack = null;
         | 
| 109 | 
            +
            		var ex = null;
         | 
| 108 110 |  | 
| 109 111 | 
             
            		if (lastExceptionStack) {
         | 
| 110 112 | 
             
            			TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);
         | 
| 111 113 | 
             
            			stack = lastExceptionStack;
         | 
| 114 | 
            +
            			ex = lastException;
         | 
| 112 115 | 
             
            			lastExceptionStack = null;
         | 
| 113 116 | 
             
            			lastException = null;
         | 
| 114 117 | 
             
            		}
         | 
| @@ -119,7 +122,7 @@ TraceKit.report = (function () { | |
| 119 122 | 
             
            			stack = { 'mode': 'onerror', 'message': message, 'stack': [ location ] };
         | 
| 120 123 | 
             
            		}
         | 
| 121 124 |  | 
| 122 | 
            -
            		notifyHandlers(stack);
         | 
| 125 | 
            +
            		notifyHandlers(stack, ex);
         | 
| 123 126 |  | 
| 124 127 | 
             
            		if (_oldOnerrorHandler) {
         | 
| 125 128 | 
             
            			return _oldOnerrorHandler.apply(this, arguments);
         | 
| @@ -141,7 +144,7 @@ TraceKit.report = (function () { | |
| 141 144 | 
             
            				var s = lastExceptionStack;
         | 
| 142 145 | 
             
            				lastExceptionStack = null;
         | 
| 143 146 | 
             
            				lastException = null;
         | 
| 144 | 
            -
            				notifyHandlers(s);
         | 
| 147 | 
            +
            				notifyHandlers(s, ex);
         | 
| 145 148 | 
             
            			}
         | 
| 146 149 | 
             
            		}
         | 
| 147 150 |  | 
| @@ -157,7 +160,7 @@ TraceKit.report = (function () { | |
| 157 160 | 
             
            			if (lastException === ex) {
         | 
| 158 161 | 
             
            				lastExceptionStack = null;
         | 
| 159 162 | 
             
            				lastException = null;
         | 
| 160 | 
            -
            				notifyHandlers(stack);
         | 
| 163 | 
            +
            				notifyHandlers(stack, ex);
         | 
| 161 164 | 
             
            			}
         | 
| 162 165 | 
             
            		}, (stack.incomplete ? 2000 : 0));
         | 
| 163 166 |  | 
| @@ -545,7 +548,7 @@ TraceKit.computeStackTrace = (function () { | |
| 545 548 | 
             
            			return null;
         | 
| 546 549 | 
             
            		}
         | 
| 547 550 |  | 
| 548 | 
            -
            		var chrome = /^\s*at (\S | 
| 551 | 
            +
            		var chrome = /^\s*at (?:new )?(.+) (?:\[as \S+\] )?\(((?:file|http):.*?):(\d+)(?::(\d+))?\)\s*$/i,
         | 
| 549 552 | 
             
            			gecko = /^\s*(\S*)(?:\((.*?)\))?@((?:file|http).*?):(\d+)(?::(\d+))?\s*$/i,
         | 
| 550 553 | 
             
            			lines = ex.stack.split("\n"),
         | 
| 551 554 | 
             
            			stack = [],
         | 
| @@ -1,24 +1,24 @@ | |
| 1 | 
            -
            (function(){var  | 
| 2 | 
            -
            a=[];for(d in b) | 
| 3 | 
            -
            !b.stack)return!1;a= | 
| 4 | 
            -
            (a.port=window.location.port);a.path=window.location.pathname;a.query=window.location.search;""!==window.location.hash&&(a.fragment=window.location.hash);a.user_agent=navigator.userAgent;a.screen_width=screen.width;a.screen_height=screen.height;a.window_width=window.innerWidth;a.window_height=window.innerHeight;a.color_depth=screen.colorDepth;c=JSON.stringify(a);this.HTTPTransmit(this.options.APIHost+ | 
| 5 | 
            -
             | 
| 6 | 
            -
            1):(b=0,[]);b=arguments[b++];try{return b()}catch(c){throw c._squash_ignored_exceptions=(c._squash_ignored_exceptions||[]).concat(d),c;}};e.prototype.ignoringExceptions=function(){var b,d,c;d=2<=arguments.length? | 
| 7 | 
            -
            d,c){var a, | 
| 8 | 
            -
             | 
| 9 | 
            -
            0;for( | 
| 10 | 
            -
            TraceKit.report=function(){function  | 
| 11 | 
            -
            TraceKit.computeStackTrace.guessFunctionName( | 
| 12 | 
            -
            TraceKit.computeStackTrace=function(){function  | 
| 13 | 
            -
             | 
| 14 | 
            -
            "\\$&")}function  | 
| 15 | 
            -
            function  | 
| 16 | 
            -
            c[1];c= | 
| 17 | 
            -
            b.context,!1}a.stack.unshift(b);return a.partial=!0}a.incomplete=!0;return!1}function  | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
            for(var  | 
| 21 | 
            -
            }try{var  | 
| 22 | 
            -
            {url: | 
| 23 | 
            -
            name:a.name,message: | 
| 24 | 
            -
            (function( | 
| 1 | 
            +
            (function(){var m,f={}.hasOwnProperty,h=[].slice,e="undefined"!==typeof exports&&null!==exports?exports:this,k=function(){},v;v=void 0;k.instance=function(){return null!=v?v:v=new m};e.SquashJavascript=k;var e=function(){TraceKit.report.subscribe(function(b,d){return SquashJavascript.instance().report(b,d)})},p,s,x,g;e.prototype.configure=function(b){var d,c,a;this.options||(this.options={disabled:!1,notifyPath:"/api/1.0/notify",transmitTimeout:15E3,ignoredExceptionClasses:[],ignoredExceptionMessages:{}});
         | 
| 2 | 
            +
            a=[];for(d in b)f.call(b,d)&&(c=b[d],a.push(this.options[d]=c));return a};e.prototype.notify=function(b,d){if(b instanceof Error)return b._squash_user_data=d,TraceKit.report(b);throw b;};e.prototype.report=function(b,d){var c,a,i,l,B,G,q,j,e,k,h,g;try{if(null!=(G=this.options)&&G.disabled)return!1;if(!(null!=(q=this.options)&&q.APIKey)||!(null!=(j=this.options)&&j.environment)||!(null!=(e=this.options)&&e.revision)||!(null!=(k=this.options)&&k.APIHost))return console.error("Missing required Squash configuration keys"),
         | 
| 3 | 
            +
            !1;if(this.shouldIgnoreError(b)||!b.stack)return!1;a={};a.api_key=this.options.APIKey;a.environment=this.options.environment;a.client="javascript";a.revision=this.options.revision;a.class_name=null!=(h=b.type)?h:b.name;!b.name&&(l=b.message.match(/^(Uncaught )?(\w+): (.+)/))?(a.class_name=l[2],a.message=l[3]):a.message=b.message;null==a.class_name&&(a.class_name="Error");a.backtraces=x(b.stack);a.capture_method=b.mode;a.occurred_at=p(new Date);a.schema=window.location.protocol.replace(/:$/,"");a.host=
         | 
| 4 | 
            +
            window.location.hostname;0<window.location.port.length&&(a.port=window.location.port);a.path=window.location.pathname;a.query=window.location.search;""!==window.location.hash&&(a.fragment=window.location.hash);a.user_agent=navigator.userAgent;a.screen_width=screen.width;a.screen_height=screen.height;a.window_width=window.innerWidth;a.window_height=window.innerHeight;a.color_depth=screen.colorDepth;if(d)for(i in g=d._squash_user_data,g)f.call(g,i)&&(B=g[i],a[i]=B);c=JSON.stringify(a);this.HTTPTransmit(this.options.APIHost+
         | 
| 5 | 
            +
            this.options.notifyPath,[["Content-Type","application/json"]],c);return!0}catch(s){return console.error("Error while trying to notify Squash:",s.stack),console.error("-- original error:",b)}};e.prototype.addUserData=function(b,d){try{return d()}catch(c){throw null==c._squash_user_data&&(c._squash_user_data={}),g(c._squash_user_data,b),c;}};e.prototype.addingUserData=function(b,d){return function(){var c;c=1<=arguments.length?h.call(arguments,0):[];return SquashJavascript.instance().addUserData(b,
         | 
| 6 | 
            +
            function(){return d.apply(null,c)})}};e.prototype.ignoreExceptions=function(){var b,d;d=2<=arguments.length?h.call(arguments,0,b=arguments.length-1):(b=0,[]);b=arguments[b++];try{return b()}catch(c){throw c._squash_ignored_exceptions=(c._squash_ignored_exceptions||[]).concat(d),c;}};e.prototype.ignoringExceptions=function(){var b,d,c;d=2<=arguments.length?h.call(arguments,0,c=arguments.length-1):(c=0,[]);b=arguments[c++];return function(){var a,i;a=1<=arguments.length?h.call(arguments,0):[];return(i=
         | 
| 7 | 
            +
            SquashJavascript.instance()).ignoreExceptions.apply(i,h.call(d).concat([function(){return b.apply(null,a)}]))}};e.prototype.HTTPTransmit=function(b,d,c){var a,i,l;a=new XMLHttpRequest;a.open("POST",b,!0);a.timeout=this.options.transmitTimeout;i=0;for(l=d.length;i<l;i++)b=d[i],a.setRequestHeader(b[0],b[1]);a.send(c);return a};e.prototype.shouldIgnoreError=function(b){var d;d=this.options.ignoredExceptionClasses.concat(b._squash_ignored_exceptions||[]);return s(d,function(c){return b.name===c})?!0:
         | 
| 8 | 
            +
            s(this.options.ignoredExceptionMessages,function(c,a){return b.name===c?s(a,function(a){return b.message.match(a)}):!1})};x=function(b){var d,c,a,i,l;d=[];i=0;for(l=b.length;i<l;i++)a=b[i],(c=a.context)&&s(c,function(a){return a&&200<a.length})&&(c=null),d.push({url:a.url,line:a.line,column:a.column,symbol:a.func,context:c,type:"minified"});return[{name:"Active Thread",faulted:!0,backtrace:d}]};p=function(b){var d;d=function(b){return 10>b?"0"+b:b};return""+b.getUTCFullYear()+"-"+d(b.getUTCMonth()+
         | 
| 9 | 
            +
            1)+"-"+d(b.getUTCDate())+"T"+d(b.getUTCHours())+":"+d(b.getUTCMinutes())+":"+d(b.getUTCSeconds())+"Z"};s=function(b,d){var c,a,i;if(b instanceof Array){a=0;for(i=b.length;a<i;a++)if(c=b[a],d(c))return!0}else for(c in b)if(f.call(b,c)&&(a=b[c],d(c,a)))return!0;return!1};g=function(b,d){var c,a,i;i=[];for(c in d)f.call(d,c)&&(a=d[c],i.push(b[c]=a));return i};m=e}).call(this);var TraceKit={};
         | 
| 10 | 
            +
            TraceKit.report=function(){function m(e,k){var f=null,g;for(g in h)if(h.hasOwnProperty(g))try{h[g](e,k)}catch(b){f=b}if(f)throw f;}function f(p){if(k){if(e===p)return;var h=k;e=k=null;m(h,p)}var f=TraceKit.computeStackTrace(p);k=f;e=p;window.setTimeout(function(){e===p&&(e=k=null,m(f,p))},f.incomplete?2E3:0);throw p;}var h=[],e=null,k=null,v=window.onerror;window.onerror=function(p,f,h){var g=null,b=null;k?(TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(k,f,h,p),g=k,b=e,e=k=null):
         | 
| 11 | 
            +
            (g={url:f,line:h},g.func=TraceKit.computeStackTrace.guessFunctionName(g.url,g.line),g.context=TraceKit.computeStackTrace.gatherContext(g.url,g.line),g={mode:"onerror",message:p,stack:[g]});m(g,b);return v?v.apply(this,arguments):!1};f.subscribe=function(e){h.push(e)};f.unsubscribe=function(e){for(var f=h.length-1;0<=f;--f)h[f]===e&&h.splice(f,1)};return f}();
         | 
| 12 | 
            +
            TraceKit.computeStackTrace=function(){function m(a){if(!c.hasOwnProperty(a)){var i,b=a.split("/");if(2<b.length&&b[2]===document.domain)try{void 0===XMLHttpRequest&&(XMLHttpRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(i){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(b){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(l){}throw Error("No XHR.");});var B=new XMLHttpRequest;B.open("GET",a,!1);
         | 
| 13 | 
            +
            B.send("");i=B.responseText}catch(d){i=""}else i=[];c[a]=i.length?i.split("\n"):[]}return c[a]}function f(a,i){var b=/function ([^(]*)\(([^)]*)\)/,d=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,c="",e=m(a),j;if(!e.length)return"?";for(var f=0;10>f;++f)if(c=e[i-f]+c,void 0!==c&&((j=d.exec(c))||(j=b.exec(c))))return j[1];return"?"}function h(a,b){var l=m(a),c=[],d=!1;if(!l.length)return null;for(var b=b-1,e=b-2,f=b+2;e<f;++e)c.push(l[e]),void 0!==l[e]&&(d=!0);return d?c:null}function e(a){return a.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,
         | 
| 14 | 
            +
            "\\$&")}function k(a){return e(a).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function v(a,b){for(var l,c,d=0,e=b.length;d<e;++d)if((l=m(b[d])).length)if(l=l.join("\n"),c=a.exec(l))return{url:b[d],line:l.substring(0,c.index).split("\n").length,column:c.index-l.lastIndexOf("\n",c.index)-1};return null}function p(a,b,l){var b=m(b),a=RegExp("\\b"+e(a)+"\\b"),c,l=l-1;return b&&b.length>l&&(c=a.exec(b[l]))?c.index:null}
         | 
| 15 | 
            +
            function s(a){var b=[window.location.href],c=document.getElementsByTagName("script"),a=""+a,d;for(d=0;d<c.length;++d){var f=c[d];f.src&&b.push(f.src)}(c=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/.exec(a))?(d=c[1]?"\\s+"+c[1]:"",f=c[2].split(",").join("\\s*,\\s*"),c=e(c[3]).replace(/;$/,";?").replace(/\s+/g,"\\s+"),d=RegExp("function"+d+"\\s*\\(\\s*"+f+"\\s*\\)\\s*{\\s*"+c+"\\s*}")):d=RegExp(e(a).replace(/\s+/g,"\\s+"));if(d=v(d,b))return d;if(c=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/.exec(a)){a=
         | 
| 16 | 
            +
            c[1];c=k(c[2]);d=RegExp("on"+a+"=[\\'\"]\\s*"+c+"\\s*[\\'\"]","i");if(d=v(d,b[0]))return d;d=RegExp(c);if(d=v(d,b))return d}return null}function x(a,b,d,c){b={url:b,line:d};if(b.url&&b.line){a.incomplete=!1;b.func||(b.func=f(b.url,b.line));b.context||(b.context=h(b.url,b.line));if(c=/ '([^']+)' /.exec(c))b.column=p(c[1],b.url,b.line);if(0<a.stack.length&&a.stack[0].url===b.url){if(a.stack[0].line===b.line)return!1;if(!a.stack[0].line&&a.stack[0].func===b.func)return a.stack[0].line=b.line,a.stack[0].context=
         | 
| 17 | 
            +
            b.context,!1}a.stack.unshift(b);return a.partial=!0}a.incomplete=!0;return!1}function g(a,c){for(var d=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,e=[],h={},k,j,g=arguments.callee.caller;g;g=g.caller)if(!(g===b||g===TraceKit.report)){j={url:null,func:"?",line:null,column:null};if(g.name)j.func=g.name;else if(k=d.exec(g.toString()))j.func=k[1];if(k=s(g)){j.url=k.url;j.line=k.line;"?"===j.func&&(j.func=f(j.url,j.line));var m=/ '([^']+)' /.exec(a.message||a.description);m&&(j.column=
         | 
| 18 | 
            +
            p(m[1],k.url,k.line))}h[""+g]&&(j.recursion=!0);e.push(j)}c&&e.splice(0,c);d={mode:"callers",name:a.name,message:a.message,stack:e};x(d,a.sourceURL||a.fileName,a.line||a.lineNumber,a.message||a.description);return d}function b(a,b){var c=null,b=void 0===b?0:+b;try{for(var e=/ line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,s=a.stacktrace.split("\n"),q=[],j,x=0,L=s.length;x<L;x+=2)if(j=e.exec(s[x])){var w={line:+j[1],column:+j[2],func:j[3]||j[4],args:j[5]?
         | 
| 19 | 
            +
            j[5].split(","):[],url:j[6]};!w.func&&w.line&&(w.func=f(w.url,w.line));if(w.line)try{w.context=h(w.url,w.line)}catch(U){}w.context||(w.context=[s[x+1]]);q.push(w)}c=q.length?{mode:"stacktrace",name:a.name,message:a.message,stack:q}:null;if(c)return c}catch(M){if(d)throw M;}try{if(a.stack){var e=/^\s*at (?:new )?(.+) (?:\[as \S+\] )?\(((?:file|http):.*?):(\d+)(?::(\d+))?\)\s*$/i,s=/^\s*(\S*)(?:\((.*?)\))?@((?:file|http).*?):(\d+)(?::(\d+))?\s*$/i,D=a.stack.split("\n"),q=[],r,t,C=/^(.*) is undefined$/.exec(a.message);
         | 
| 20 | 
            +
            j=0;for(var F=D.length;j<F;++j){if(r=s.exec(D[j]))t={url:r[3],func:r[1],args:r[2]?r[2].split(","):"",line:+r[4],column:r[5]?+r[5]:null};else if(r=e.exec(D[j]))t={url:r[2],func:r[1],line:+r[3],column:r[4]?+r[4]:null};else continue;!t.func&&t.line&&(t.func=f(t.url,t.line));t.line&&(t.context=h(t.url,t.line));q.push(t)}q[0]&&(q[0].line&&!q[0].column&&C)&&(q[0].column=p(C[1],q[0].url,q[0].line));c=q.length?{mode:"stack",name:a.name,message:a.message,stack:q}:null}else c=null;if(c)return c}catch(N){if(d)throw N;
         | 
| 21 | 
            +
            }try{var z=a.message.split("\n");if(4>z.length)c=null;else{D=/^\s*Line (\d+) of linked script ((?:file|http)\S+)(?:: in function (\S+))?\s*$/i;r=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|http)\S+)(?:: in function (\S+))?\s*$/i;t=/^\s*Line (\d+) of function script\s*$/i;var C=[],n=document.getElementsByTagName("script"),F=[],y,u,H,A;for(u in n)n.hasOwnProperty(u)&&!n[u].src&&F.push(n[u]);u=2;for(H=z.length;u<H;u+=2){n=null;if(y=D.exec(z[u]))n={url:y[2],func:y[3],line:+y[1]};else if(y=r.exec(z[u])){var n=
         | 
| 22 | 
            +
            {url:y[3],func:y[4]},O=+y[1],I=F[y[2]-1];if(I&&(A=m(n.url))){A=A.join("\n");var J=A.indexOf(I.innerText);0<=J&&(n.line=O+A.substring(0,J).split("\n").length)}}else if(y=t.exec(z[u])){var K=window.location.href.replace(/#.*$/,""),P=y[1],Q=RegExp(k(z[u+1]));A=v(Q,[K]);n={url:K,line:A?A.line:P,func:""}}if(n){n.func||(n.func=f(n.url,n.line));var E=h(n.url,n.line),R=E?E[Math.floor(E.length/2)]:null;n.context=E&&R.replace(/^\s*/,"")===z[u+1].replace(/^\s*/,"")?E:[z[u+1]];C.push(n)}}c=C.length?{mode:"multiline",
         | 
| 23 | 
            +
            name:a.name,message:z[0],stack:C}:null}if(c)return c}catch(S){if(d)throw S;}try{if(c=g(a,b+1))return c}catch(T){if(d)throw T;}return{mode:"failed"}}var d=!1,c={};b.augmentStackTraceWithInitialElement=x;b.guessFunctionName=f;b.gatherContext=h;b.ofCaller=function(a){a=(void 0===a?0:+a)+1;try{0()}catch(c){return b(c,a+1)}return null};return b}();
         | 
| 24 | 
            +
            (function(m){var f=Array.prototype.slice,h=m.setTimeout;m.setTimeout=function(){var e=f.call(arguments,0),m=e[0];e[0]=function(){try{m.apply(this,arguments)}catch(e){throw TraceKit.report(e),e;}};return h.apply(this,e)};var e=m.setInterval;m.setInterval=function(){var k=f.call(arguments,0),h=k[0];k[0]=function(){try{h.apply(this,arguments)}catch(e){throw TraceKit.report(e),e;}};return e.apply(this,k)}})(window);
         | 
| @@ -25,8 +25,8 @@ | |
| 25 25 | 
             
                var ISODateString, any, buildBacktrace, mergeBang;
         | 
| 26 26 |  | 
| 27 27 | 
             
                function _SquashJavascript() {
         | 
| 28 | 
            -
                  TraceKit.report.subscribe(function(error) {
         | 
| 29 | 
            -
                    return SquashJavascript.instance().report(error);
         | 
| 28 | 
            +
                  TraceKit.report.subscribe(function(info, error) {
         | 
| 29 | 
            +
                    return SquashJavascript.instance().report(info, error);
         | 
| 30 30 | 
             
                  });
         | 
| 31 31 | 
             
                }
         | 
| 32 32 |  | 
| @@ -48,16 +48,17 @@ | |
| 48 48 | 
             
                  return _results;
         | 
| 49 49 | 
             
                };
         | 
| 50 50 |  | 
| 51 | 
            -
                _SquashJavascript.prototype.notify = function(error) {
         | 
| 51 | 
            +
                _SquashJavascript.prototype.notify = function(error, user_data) {
         | 
| 52 52 | 
             
                  if (error instanceof Error) {
         | 
| 53 | 
            +
                    error._squash_user_data = user_data;
         | 
| 53 54 | 
             
                    return TraceKit.report(error);
         | 
| 54 55 | 
             
                  } else {
         | 
| 55 56 | 
             
                    throw error;
         | 
| 56 57 | 
             
                  }
         | 
| 57 58 | 
             
                };
         | 
| 58 59 |  | 
| 59 | 
            -
                _SquashJavascript.prototype.report = function(error) {
         | 
| 60 | 
            -
                  var body, fields, matches, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
         | 
| 60 | 
            +
                _SquashJavascript.prototype.report = function(info, error) {
         | 
| 61 | 
            +
                  var body, fields, k, matches, v, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
         | 
| 61 62 | 
             
                  try {
         | 
| 62 63 | 
             
                    if ((_ref = this.options) != null ? _ref.disabled : void 0) {
         | 
| 63 64 | 
             
                      return false;
         | 
| @@ -66,29 +67,29 @@ | |
| 66 67 | 
             
                      console.error("Missing required Squash configuration keys");
         | 
| 67 68 | 
             
                      return false;
         | 
| 68 69 | 
             
                    }
         | 
| 69 | 
            -
                    if (this.shouldIgnoreError( | 
| 70 | 
            +
                    if (this.shouldIgnoreError(info)) {
         | 
| 70 71 | 
             
                      return false;
         | 
| 71 72 | 
             
                    }
         | 
| 72 | 
            -
                    if (! | 
| 73 | 
            +
                    if (!info.stack) {
         | 
| 73 74 | 
             
                      return false;
         | 
| 74 75 | 
             
                    }
         | 
| 75 | 
            -
                    fields =  | 
| 76 | 
            +
                    fields = new Object();
         | 
| 76 77 | 
             
                    fields.api_key = this.options.APIKey;
         | 
| 77 78 | 
             
                    fields.environment = this.options.environment;
         | 
| 78 79 | 
             
                    fields.client = "javascript";
         | 
| 79 80 | 
             
                    fields.revision = this.options.revision;
         | 
| 80 | 
            -
                    fields.class_name =  | 
| 81 | 
            -
                    if (! | 
| 81 | 
            +
                    fields.class_name = (_ref5 = info.type) != null ? _ref5 : info.name;
         | 
| 82 | 
            +
                    if (!info.name && (matches = info.message.match(/^(Uncaught )?(\w+): (.+)/))) {
         | 
| 82 83 | 
             
                      fields.class_name = matches[2];
         | 
| 83 84 | 
             
                      fields.message = matches[3];
         | 
| 84 85 | 
             
                    } else {
         | 
| 85 | 
            -
                      fields.message =  | 
| 86 | 
            +
                      fields.message = info.message;
         | 
| 86 87 | 
             
                    }
         | 
| 87 | 
            -
                    if (( | 
| 88 | 
            +
                    if ((_ref6 = fields.class_name) == null) {
         | 
| 88 89 | 
             
                      fields.class_name = 'Error';
         | 
| 89 90 | 
             
                    }
         | 
| 90 | 
            -
                    fields.backtraces = buildBacktrace( | 
| 91 | 
            -
                    fields.capture_method =  | 
| 91 | 
            +
                    fields.backtraces = buildBacktrace(info.stack);
         | 
| 92 | 
            +
                    fields.capture_method = info.mode;
         | 
| 92 93 | 
             
                    fields.occurred_at = ISODateString(new Date());
         | 
| 93 94 | 
             
                    fields.schema = window.location.protocol.replace(/:$/, '');
         | 
| 94 95 | 
             
                    fields.host = window.location.hostname;
         | 
| @@ -106,12 +107,20 @@ | |
| 106 107 | 
             
                    fields.window_width = window.innerWidth;
         | 
| 107 108 | 
             
                    fields.window_height = window.innerHeight;
         | 
| 108 109 | 
             
                    fields.color_depth = screen.colorDepth;
         | 
| 110 | 
            +
                    if (error) {
         | 
| 111 | 
            +
                      _ref7 = error._squash_user_data;
         | 
| 112 | 
            +
                      for (k in _ref7) {
         | 
| 113 | 
            +
                        if (!__hasProp.call(_ref7, k)) continue;
         | 
| 114 | 
            +
                        v = _ref7[k];
         | 
| 115 | 
            +
                        fields[k] = v;
         | 
| 116 | 
            +
                      }
         | 
| 117 | 
            +
                    }
         | 
| 109 118 | 
             
                    body = JSON.stringify(fields);
         | 
| 110 119 | 
             
                    this.HTTPTransmit(this.options.APIHost + this.options.notifyPath, [['Content-Type', 'application/json']], body);
         | 
| 111 120 | 
             
                    return true;
         | 
| 112 121 | 
             
                  } catch (internal_error) {
         | 
| 113 122 | 
             
                    console.error("Error while trying to notify Squash:", internal_error.stack);
         | 
| 114 | 
            -
                    return console.error("-- original error:",  | 
| 123 | 
            +
                    return console.error("-- original error:", info);
         | 
| 115 124 | 
             
                  }
         | 
| 116 125 | 
             
                };
         | 
| 117 126 |  | 
| @@ -164,8 +173,8 @@ | |
| 164 173 | 
             
                _SquashJavascript.prototype.HTTPTransmit = function(url, headers, body) {
         | 
| 165 174 | 
             
                  var header, request, _i, _len;
         | 
| 166 175 | 
             
                  request = new XMLHttpRequest();
         | 
| 167 | 
            -
                  request.timeout = this.options.transmitTimeout;
         | 
| 168 176 | 
             
                  request.open("POST", url, true);
         | 
| 177 | 
            +
                  request.timeout = this.options.transmitTimeout;
         | 
| 169 178 | 
             
                  for (_i = 0, _len = headers.length; _i < _len; _i++) {
         | 
| 170 179 | 
             
                    header = headers[_i];
         | 
| 171 180 | 
             
                    request.setRequestHeader(header[0], header[1]);
         | 
| @@ -200,7 +209,7 @@ | |
| 200 209 | 
             
                    line = stack[_i];
         | 
| 201 210 | 
             
                    context = line.context;
         | 
| 202 211 | 
             
                    if (context && any(context, function(cline) {
         | 
| 203 | 
            -
                      return cline.length > 200;
         | 
| 212 | 
            +
                      return cline && cline.length > 200;
         | 
| 204 213 | 
             
                    })) {
         | 
| 205 214 | 
             
                      context = null;
         | 
| 206 215 | 
             
                    }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,36 +1,34 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: squash_javascript
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 5 | 
            -
              prerelease: 
         | 
| 4 | 
            +
              version: 1.0.3
         | 
| 6 5 | 
             
            platform: ruby
         | 
| 7 6 | 
             
            authors:
         | 
| 8 7 | 
             
            - Tim Morgan
         | 
| 9 8 | 
             
            autorequire: 
         | 
| 10 9 | 
             
            bindir: bin
         | 
| 11 10 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 11 | 
            +
            date: 2014-01-23 00:00:00.000000000 Z
         | 
| 13 12 | 
             
            dependencies:
         | 
| 14 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 14 | 
             
              name: railties
         | 
| 16 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            -
                none: false
         | 
| 18 16 | 
             
                requirements:
         | 
| 19 17 | 
             
                - - ! '>='
         | 
| 20 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            -
                    version:  | 
| 19 | 
            +
                    version: !binary |-
         | 
| 20 | 
            +
                      My4x
         | 
| 22 21 | 
             
              type: :runtime
         | 
| 23 22 | 
             
              prerelease: false
         | 
| 24 23 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            -
                none: false
         | 
| 26 24 | 
             
                requirements:
         | 
| 27 25 | 
             
                - - ! '>='
         | 
| 28 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version:  | 
| 27 | 
            +
                    version: !binary |-
         | 
| 28 | 
            +
                      My4x
         | 
| 30 29 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 31 30 | 
             
              name: json
         | 
| 32 31 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            -
                none: false
         | 
| 34 32 | 
             
                requirements:
         | 
| 35 33 | 
             
                - - ! '>='
         | 
| 36 34 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -38,7 +36,6 @@ dependencies: | |
| 38 36 | 
             
              type: :runtime
         | 
| 39 37 | 
             
              prerelease: false
         | 
| 40 38 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            -
                none: false
         | 
| 42 39 | 
             
                requirements:
         | 
| 43 40 | 
             
                - - ! '>='
         | 
| 44 41 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -46,7 +43,6 @@ dependencies: | |
| 46 43 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 47 44 | 
             
              name: squash_uploader
         | 
| 48 45 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 | 
            -
                none: false
         | 
| 50 46 | 
             
                requirements:
         | 
| 51 47 | 
             
                - - ! '>='
         | 
| 52 48 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -54,7 +50,6 @@ dependencies: | |
| 54 50 | 
             
              type: :runtime
         | 
| 55 51 | 
             
              prerelease: false
         | 
| 56 52 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            -
                none: false
         | 
| 58 53 | 
             
                requirements:
         | 
| 59 54 | 
             
                - - ! '>='
         | 
| 60 55 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -62,7 +57,6 @@ dependencies: | |
| 62 57 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 58 | 
             
              name: yard
         | 
| 64 59 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                none: false
         | 
| 66 60 | 
             
                requirements:
         | 
| 67 61 | 
             
                - - ! '>='
         | 
| 68 62 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -70,7 +64,6 @@ dependencies: | |
| 70 64 | 
             
              type: :development
         | 
| 71 65 | 
             
              prerelease: false
         | 
| 72 66 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 73 | 
            -
                none: false
         | 
| 74 67 | 
             
                requirements:
         | 
| 75 68 | 
             
                - - ! '>='
         | 
| 76 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -78,7 +71,6 @@ dependencies: | |
| 78 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 79 72 | 
             
              name: redcarpet
         | 
| 80 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 81 | 
            -
                none: false
         | 
| 82 74 | 
             
                requirements:
         | 
| 83 75 | 
             
                - - ! '>='
         | 
| 84 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -86,7 +78,6 @@ dependencies: | |
| 86 78 | 
             
              type: :development
         | 
| 87 79 | 
             
              prerelease: false
         | 
| 88 80 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 89 | 
            -
                none: false
         | 
| 90 81 | 
             
                requirements:
         | 
| 91 82 | 
             
                - - ! '>='
         | 
| 92 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -94,7 +85,6 @@ dependencies: | |
| 94 85 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 95 86 | 
             
              name: jeweler
         | 
| 96 87 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 97 | 
            -
                none: false
         | 
| 98 88 | 
             
                requirements:
         | 
| 99 89 | 
             
                - - ! '>='
         | 
| 100 90 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -102,7 +92,6 @@ dependencies: | |
| 102 92 | 
             
              type: :development
         | 
| 103 93 | 
             
              prerelease: false
         | 
| 104 94 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 105 | 
            -
                none: false
         | 
| 106 95 | 
             
                requirements:
         | 
| 107 96 | 
             
                - - ! '>='
         | 
| 108 97 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -110,7 +99,6 @@ dependencies: | |
| 110 99 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 111 100 | 
             
              name: rspec
         | 
| 112 101 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 113 | 
            -
                none: false
         | 
| 114 102 | 
             
                requirements:
         | 
| 115 103 | 
             
                - - ! '>='
         | 
| 116 104 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -118,7 +106,6 @@ dependencies: | |
| 118 106 | 
             
              type: :development
         | 
| 119 107 | 
             
              prerelease: false
         | 
| 120 108 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 | 
            -
                none: false
         | 
| 122 109 | 
             
                requirements:
         | 
| 123 110 | 
             
                - - ! '>='
         | 
| 124 111 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -147,29 +134,25 @@ files: | |
| 147 134 | 
             
            homepage: http://github.com/SquareSquash/javascript
         | 
| 148 135 | 
             
            licenses:
         | 
| 149 136 | 
             
            - Apache 2.0
         | 
| 137 | 
            +
            metadata: {}
         | 
| 150 138 | 
             
            post_install_message: 
         | 
| 151 139 | 
             
            rdoc_options: []
         | 
| 152 140 | 
             
            require_paths:
         | 
| 153 141 | 
             
            - lib
         | 
| 154 142 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 155 | 
            -
              none: false
         | 
| 156 143 | 
             
              requirements:
         | 
| 157 144 | 
             
              - - ! '>='
         | 
| 158 145 | 
             
                - !ruby/object:Gem::Version
         | 
| 159 146 | 
             
                  version: '0'
         | 
| 160 | 
            -
                  segments:
         | 
| 161 | 
            -
                  - 0
         | 
| 162 | 
            -
                  hash: 2284752948071690059
         | 
| 163 147 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 164 | 
            -
              none: false
         | 
| 165 148 | 
             
              requirements:
         | 
| 166 149 | 
             
              - - ! '>='
         | 
| 167 150 | 
             
                - !ruby/object:Gem::Version
         | 
| 168 151 | 
             
                  version: '0'
         | 
| 169 152 | 
             
            requirements: []
         | 
| 170 153 | 
             
            rubyforge_project: 
         | 
| 171 | 
            -
            rubygems_version:  | 
| 154 | 
            +
            rubygems_version: 2.2.1
         | 
| 172 155 | 
             
            signing_key: 
         | 
| 173 | 
            -
            specification_version:  | 
| 156 | 
            +
            specification_version: 4
         | 
| 174 157 | 
             
            summary: Squash client for JavaScript projects
         | 
| 175 158 | 
             
            test_files: []
         |