rack-mini-profiler 1.1.4 → 1.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23beddd8a924076759b5f25229f0e9a2c91dee5b916f2e4712381c247ad4922d
4
- data.tar.gz: af7fc0fbe8008e5159e86b4cdf4fb19d694e15ea125eae2c776b0815df3dca0f
3
+ metadata.gz: 293023dd85ac18a9da819b665e1965ff2f4c6e0910b50c22b75a6b52a7b8ab75
4
+ data.tar.gz: 514b51f165105a9d67d29119b541fa483b5c1a4f2aac4f24c06b8d0e09bf48d2
5
5
  SHA512:
6
- metadata.gz: bc6a2e360c45f76f9a66f12e649932ced7a2fdad4e6102eb551df688065970ef47d6b3a4871fa3f642c6b86884b236b547c98fc14de5ba93ee44c4fdbf4a6f90
7
- data.tar.gz: f6d0ea244eac7b8a40adb7556a7185a245d378402248bd9317be18a616ed2d4c4ba4203401600bb9416f38f875762d688a1191a52a17c643793d4a5a4607f6b5
6
+ metadata.gz: af932928ecc8e2861db979ca4f9df62229de5589cbfaf37c556a5430ee98bbe941b95ba09603e7112028c75b87015b785394add2952673b9e430cbc24ea3afa8
7
+ data.tar.gz: 7355306f0f0b809b589ff50dfb1774a57d0cc9bd4229bd1d1b2fae95a9693508093f5f4426cef6154062dba39c5824037742fd35fc615872fb15144367be9e56
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.1.5 - 2020-01-28
4
+
5
+ - [FIX] correct custom counter regression
6
+ - [FIX] respect max_traces_to_show
7
+ - [FIX] handle storage engine failures in whitelist mode
8
+
3
9
  ## 1.1.4 - 2019-12-12
4
10
 
5
11
  - [SECURITY] carefully crafted SQL could cause an XSS on sites that do not use CSPs
data/lib/html/includes.js CHANGED
@@ -79,20 +79,6 @@ var MiniProfiler = (function() {
79
79
  return localStorage[getVersionedKey(keyPrefix)];
80
80
  };
81
81
 
82
- var compileTemplates = function compileTemplates(data) {
83
- var element = document.createElement("DIV");
84
- element.innerHTML = data;
85
- var templates = {};
86
- var children = element.children;
87
-
88
- for (var i = 0; i < children.length; i++) {
89
- var child = children[i];
90
- templates[child.id] = doT.compile(child.innerHTML);
91
- }
92
-
93
- MiniProfiler.templates = templates;
94
- };
95
-
96
82
  var getClientPerformance = function getClientPerformance() {
97
83
  return window.performance === null ? null : window.performance;
98
84
  };
@@ -284,7 +270,7 @@ var MiniProfiler = (function() {
284
270
  }); // limit count
285
271
 
286
272
  if (
287
- container.querySelector(".profiler-result").length >
273
+ container.querySelectorAll(".profiler-result").length >
288
274
  options.maxTracesToShow
289
275
  ) {
290
276
  var elem = container.querySelector(".profiler-result");
@@ -746,7 +732,24 @@ var MiniProfiler = (function() {
746
732
  XMLHttpRequest.prototype.send = function(data) {
747
733
  ajaxStartTime = new Date();
748
734
  this.addEventListener("load", function() {
749
- // should be an array of strings, e.g. ["008c4813-9bd7-443d-9376-9441ec4d6a8c","16ff377b-8b9c-4c20-a7b5-97cd9fa7eea7"]
735
+ // responseURL isn't available in IE11
736
+ if (
737
+ this.responseURL &&
738
+ this.responseURL.indexOf(window.location.origin) !== 0
739
+ ) {
740
+ return;
741
+ }
742
+ // getAllResponseHeaders isn't available in Edge.
743
+ var allHeaders = this.getAllResponseHeaders
744
+ ? this.getAllResponseHeaders()
745
+ : null;
746
+ if (
747
+ allHeaders &&
748
+ allHeaders.toLowerCase().indexOf("x-miniprofiler-ids") === -1
749
+ ) {
750
+ return;
751
+ }
752
+ // should be a string of comma-separated ids
750
753
  var stringIds = this.getResponseHeader("X-MiniProfiler-Ids");
751
754
 
752
755
  if (stringIds) {
@@ -181,7 +181,7 @@
181
181
 
182
182
  {{? it.timing.has_children}}
183
183
  {{~ it.timing.children :value}}
184
- {{= MiniProfiler.templates.timingTemplate({timing: value, page: it}) }}
184
+ {{= MiniProfiler.templates.timingTemplate({timing: value, page: it.page}) }}
185
185
  {{~}}
186
186
  {{?}}
187
187
  </script>
data/lib/html/vendor.js CHANGED
@@ -15,7 +15,7 @@ var out=' <a href="'+( MiniProfiler.shareUrl(it.page.id) )+'" class="profiler-sh
15
15
  }
16
16
  MiniProfiler.templates["timingTemplate"] = function anonymous(it
17
17
  ) {
18
- var out=' <tr class="';if(it.timing.is_trivial){out+='profiler-trivial';}out+='" data-timing-id="'+( it.timing.id )+'"> <td class="profiler-label" title="';if(it.timing.name && it.timing.name.length > 45){out+=''+( it.timing.name );}out+='"> <span class="profiler-indent">'+( MiniProfiler.renderIndent(it.timing.depth) )+'</span> '+( it.timing.name.slice(0,45) );if(it.timing.name && it.timing.name.length > 45){out+='...';}out+=' </td> <td class="profiler-duration" title="duration of this step without any children\'s durations"> '+( MiniProfiler.formatDuration(it.timing.duration_without_children_milliseconds) )+' </td> <td class="profiler-duration profiler-duration-with-children" title="duration of this step and its children"> '+( MiniProfiler.formatDuration(it.timing.duration_milliseconds) )+' </td> <td class="profiler-duration time-from-start" title="time elapsed since profiling started"> <span class="profiler-unit">+</span>'+( MiniProfiler.formatDuration(it.timing.start_milliseconds) )+' </td> ';if(it.timing.has_sql_timings){out+=' <td class="profiler-duration ';if(it.timing.has_duplicate_sql_timings){out+='profiler-warning';}out+='" title="';if(it.timing.has_duplicate_sql_timings){out+='duplicate queries detected - ';}if(it.timing.executed_readers > 0 || it.timing.executed_scalars > 0 || it.timing.executed_non_queries > 0){out+=''+( it.timing.executed_readers )+' reader, '+( it.timing.executed_scalars )+' scalar, '+( it.timing.executed_non_queries )+' non-query statements executed';}out+='"> <a class="profiler-queries-show"> ';if(it.timing.has_duplicate_sql_timings){out+='<span class="profiler-nuclear">!</span>';}out+=' '+( it.timing.sql_timings.length )+' <span class="profiler-unit">sql</span> </a> </td> <td class="profiler-duration" title="aggregate duration of all queries in this step (excludes children)"> '+( MiniProfiler.formatDuration(it.timing.sql_timings_duration_milliseconds) )+' </td> ';}else{out+=' <td colspan="2"></td> ';}out+=' ';var arr1=it.page.custom_timing_names;if(arr1){var value,i1=-1,l1=arr1.length-1;while(i1<l1){value=arr1[i1+=1];out+=' ';if(it.timing.custom_timings && it.timing.custom_timings[value]){out+=' <td class="profiler-duration" title="aggregate number of all '+( value.toLowerCase() )+' invocations in this step (excludes children)"> '+( it.timing.custom_timings[value].length )+' '+( value.toLowerCase() )+' </td> <td class="profiler-duration" title="aggregate duration of all '+( value.toLowerCase() )+' invocations in this step (excludes children)"> '+( MiniProfiler.formatDuration(it.timing.custom_timing_stats[value].duration) )+' </td> ';}else{out+=' <td colspan="2"></td> ';}out+=' ';} } out+=' </tr> ';if(it.timing.has_children){out+=' ';var arr2=it.timing.children;if(arr2){var value,i2=-1,l2=arr2.length-1;while(i2<l2){value=arr2[i2+=1];out+=' '+( MiniProfiler.templates.timingTemplate({timing: value, page: it}) )+' ';} } out+=' ';}return out;
18
+ var out=' <tr class="';if(it.timing.is_trivial){out+='profiler-trivial';}out+='" data-timing-id="'+( it.timing.id )+'"> <td class="profiler-label" title="';if(it.timing.name && it.timing.name.length > 45){out+=''+( it.timing.name );}out+='"> <span class="profiler-indent">'+( MiniProfiler.renderIndent(it.timing.depth) )+'</span> '+( it.timing.name.slice(0,45) );if(it.timing.name && it.timing.name.length > 45){out+='...';}out+=' </td> <td class="profiler-duration" title="duration of this step without any children\'s durations"> '+( MiniProfiler.formatDuration(it.timing.duration_without_children_milliseconds) )+' </td> <td class="profiler-duration profiler-duration-with-children" title="duration of this step and its children"> '+( MiniProfiler.formatDuration(it.timing.duration_milliseconds) )+' </td> <td class="profiler-duration time-from-start" title="time elapsed since profiling started"> <span class="profiler-unit">+</span>'+( MiniProfiler.formatDuration(it.timing.start_milliseconds) )+' </td> ';if(it.timing.has_sql_timings){out+=' <td class="profiler-duration ';if(it.timing.has_duplicate_sql_timings){out+='profiler-warning';}out+='" title="';if(it.timing.has_duplicate_sql_timings){out+='duplicate queries detected - ';}if(it.timing.executed_readers > 0 || it.timing.executed_scalars > 0 || it.timing.executed_non_queries > 0){out+=''+( it.timing.executed_readers )+' reader, '+( it.timing.executed_scalars )+' scalar, '+( it.timing.executed_non_queries )+' non-query statements executed';}out+='"> <a class="profiler-queries-show"> ';if(it.timing.has_duplicate_sql_timings){out+='<span class="profiler-nuclear">!</span>';}out+=' '+( it.timing.sql_timings.length )+' <span class="profiler-unit">sql</span> </a> </td> <td class="profiler-duration" title="aggregate duration of all queries in this step (excludes children)"> '+( MiniProfiler.formatDuration(it.timing.sql_timings_duration_milliseconds) )+' </td> ';}else{out+=' <td colspan="2"></td> ';}out+=' ';var arr1=it.page.custom_timing_names;if(arr1){var value,i1=-1,l1=arr1.length-1;while(i1<l1){value=arr1[i1+=1];out+=' ';if(it.timing.custom_timings && it.timing.custom_timings[value]){out+=' <td class="profiler-duration" title="aggregate number of all '+( value.toLowerCase() )+' invocations in this step (excludes children)"> '+( it.timing.custom_timings[value].length )+' '+( value.toLowerCase() )+' </td> <td class="profiler-duration" title="aggregate duration of all '+( value.toLowerCase() )+' invocations in this step (excludes children)"> '+( MiniProfiler.formatDuration(it.timing.custom_timing_stats[value].duration) )+' </td> ';}else{out+=' <td colspan="2"></td> ';}out+=' ';} } out+=' </tr> ';if(it.timing.has_children){out+=' ';var arr2=it.timing.children;if(arr2){var value,i2=-1,l2=arr2.length-1;while(i2<l2){value=arr2[i2+=1];out+=' '+( MiniProfiler.templates.timingTemplate({timing: value, page: it.page}) )+' ';} } out+=' ';}return out;
19
19
  }
20
20
  MiniProfiler.templates["sqlTimingTemplate"] = function anonymous(it
21
21
  ) {
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Rack
3
3
  class MiniProfiler
4
- ASSET_VERSION = '7e0146095db5a4bd0c9ae1b165d69e56'
4
+ ASSET_VERSION = '2ed167b8bd3b0bc4e43c9ba3d0c679e4'
5
5
  end
6
6
  end
@@ -89,10 +89,17 @@ module Rack
89
89
  def has_valid_cookie?
90
90
  valid_cookie = !@cookie.nil?
91
91
 
92
- if (MiniProfiler.config.authorization_mode == :whitelist)
93
- @allowed_tokens ||= @store.allowed_tokens
92
+ if (MiniProfiler.config.authorization_mode == :whitelist) && valid_cookie
93
+ begin
94
+ @allowed_tokens ||= @store.allowed_tokens
95
+ rescue => e
96
+ if @config.storage_failure != nil
97
+ @config.storage_failure.call(e)
98
+ end
99
+ end
94
100
 
95
- valid_cookie = (Array === @orig_auth_tokens) &&
101
+ valid_cookie = @allowed_tokens &&
102
+ (Array === @orig_auth_tokens) &&
96
103
  ((@allowed_tokens & @orig_auth_tokens).length > 0)
97
104
  end
98
105
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rack
4
4
  class MiniProfiler
5
- VERSION = '1.1.4'
5
+ VERSION = '1.1.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-mini-profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-12-12 00:00:00.000000000 Z
13
+ date: 2020-01-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack