rack-mini-profiler 1.0.1 → 1.1.6
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 +4 -4
- data/CHANGELOG.md +60 -20
- data/README.md +16 -8
- data/lib/html/dot.1.1.2.min.js +2 -0
- data/lib/html/includes.css +102 -34
- data/lib/html/includes.js +1295 -1011
- data/lib/html/includes.scss +515 -441
- data/lib/html/includes.tmpl +138 -148
- data/lib/html/pretty-print.js +810 -0
- data/lib/html/share.html +0 -1
- data/lib/html/vendor.js +840 -0
- data/lib/mini_profiler/asset_version.rb +3 -2
- data/lib/mini_profiler/client_settings.rb +10 -3
- data/lib/mini_profiler/config.rb +4 -4
- data/lib/mini_profiler/gc_profiler.rb +1 -1
- data/lib/mini_profiler/profiler.rb +41 -11
- data/lib/mini_profiler/profiling_methods.rb +2 -6
- data/lib/mini_profiler/storage/file_store.rb +3 -3
- data/lib/mini_profiler/storage/memcache_store.rb +2 -0
- data/lib/mini_profiler/storage/memory_store.rb +1 -1
- data/lib/mini_profiler/timer_struct/sql.rb +1 -1
- data/lib/mini_profiler/version.rb +1 -1
- data/lib/mini_profiler_rails/railtie.rb +2 -0
- data/lib/patches/db/mongo.rb +1 -1
- data/lib/patches/db/moped.rb +1 -1
- data/lib/patches/db/plucky.rb +4 -4
- data/lib/patches/sql_patches.rb +1 -1
- data/rack-mini-profiler.gemspec +5 -1
- metadata +35 -10
- data/lib/html/jquery.1.7.1.js +0 -4
- data/lib/html/jquery.tmpl.js +0 -486
- data/lib/html/list.css +0 -9
- data/lib/html/list.js +0 -38
- data/lib/html/list.tmpl +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 343dec64a1a5e96e086a3cbceb07c418d08a891d5f89a9315472108e125a9282
|
4
|
+
data.tar.gz: d242ccef7bd8c5aeb2224f7912886a0e05ce21ef571a3f6c76f384686b5f1525
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 394c8ce3d60dbb2638fd0ea58420e8372702cfa5043bf08bdd51e731abe3019f1299bb4e3c22b92fac70f477a2fe8783720a3f2c46d393dda7ace0509b02963b
|
7
|
+
data.tar.gz: cf3ba12543795194bab109ff9fddd97ff0d0c349b8f505cebae202cf30b6e6d8e5058a1385ad4a8cbc747d27108c6351a4c7ddb53ccda14b9f68b7f4f9978b48
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,46 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
## 1.
|
3
|
+
## 1.1.6 - 2020-01-30
|
4
|
+
|
5
|
+
- [FIX] edge condition on page transition function could lead to exceptions
|
6
|
+
|
7
|
+
## 1.1.5 - 2020-01-28
|
8
|
+
|
9
|
+
- [FIX] correct custom counter regression
|
10
|
+
- [FIX] respect max_traces_to_show
|
11
|
+
- [FIX] handle storage engine failures in whitelist mode
|
12
|
+
|
13
|
+
## 1.1.4 - 2019-12-12
|
14
|
+
|
15
|
+
- [SECURITY] carefully crafted SQL could cause an XSS on sites that do not use CSPs
|
16
|
+
|
17
|
+
## 1.1.3 - 2019-10-28
|
18
|
+
|
19
|
+
- [FEATURE] precompile all templates to avoid need for unsafe-eval
|
20
|
+
|
21
|
+
## 1.1.2 - 2019-10-24
|
22
|
+
|
23
|
+
- [FIX] JS payload was not working on IE11 and leading to errors
|
24
|
+
- [FIX] Remove global singleton_class which was injected
|
25
|
+
- [FIX] Regressions post removal of jQuery
|
26
|
+
|
27
|
+
## 1.1.1 - 2019-10-22
|
28
|
+
|
29
|
+
- [FIX] correct JavaScript fetch support header iteration (Jorge Manrubia)
|
30
|
+
|
31
|
+
## 1.1.0 - 2019-10-01
|
32
|
+
|
33
|
+
- [FEATURE] remove jQuery dependency, switch template library to dot.js
|
34
|
+
- [FEATURE] disable all sensitive debugging methods by default (env, memory profiling) can be enabled with enable_advanced_debugging_tools.
|
35
|
+
- [FIX] when conditionally requiring rack mini profiler, asset precompile could fail
|
36
|
+
- [FEATURE] `/rack-mini-profiler/requests` can be used to monitor all requests for apps that do not have a UI (like API apps)
|
37
|
+
- [SECURITY] XSS injection in `?pp=help` via rogue uri
|
38
|
+
|
39
|
+
## 1.0.2 - 2019-02-05
|
40
|
+
|
41
|
+
- [FIX] correct script injection to work with Rails 6 and above
|
42
|
+
|
43
|
+
## 1.0.1 - 2018-12-10
|
4
44
|
|
5
45
|
- [FIX] add support for exec_params instrumentation in PG, this method as of PG 1.1.0 no longer
|
6
46
|
routes calls to exec / async_exec
|
@@ -10,7 +50,7 @@
|
|
10
50
|
- [FIX] getEntriesByName is missing in iOS, workaround
|
11
51
|
- [FEATURE] drop support for Ruby 2.2.0 we require 2.3.0 and up (EOL Ruby no longer supported)
|
12
52
|
|
13
|
-
## 1.0.0
|
53
|
+
## 1.0.0 - 2018-03-29
|
14
54
|
|
15
55
|
- [BREAKING CHANGE] Ruby version 2.2.0 or later is required
|
16
56
|
- [FEATURE] use new web performance API to avoid warning @MikeRogers0
|
@@ -18,16 +58,16 @@
|
|
18
58
|
- [FIX] correct jQuery 3.0 deprecations @TiSer
|
19
59
|
- [FIX] JS in IFRAME @naiyt
|
20
60
|
|
21
|
-
## 0.10.8 2017-12-01
|
61
|
+
## 0.10.8 - 2017-12-01
|
22
62
|
|
23
63
|
- [FEATURE] Add `# frozen_string_literal: true` to all `lib/**/*.rb` files
|
24
64
|
|
25
|
-
## 0.10.7 2017-11-24
|
65
|
+
## 0.10.7 - 2017-11-24
|
26
66
|
|
27
67
|
- [FEATURE] Replace Time.now with Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
28
68
|
- [FIX] Error with webrick and empty cache control
|
29
69
|
|
30
|
-
## 0.10.6 2017-10-30
|
70
|
+
## 0.10.6 - 2017-10-30
|
31
71
|
|
32
72
|
- [FEATURE] Support for vertical positions (top/bottom)
|
33
73
|
- [FEATURE] Suppress profiler results in print media @Mike Dillon
|
@@ -35,11 +75,11 @@
|
|
35
75
|
- [FEATURE] install generator @yhirano
|
36
76
|
- [FEATURE] store initial cache control headers in X-MiniProfiler-Original-Cache-Control @mrasu
|
37
77
|
|
38
|
-
## 0.10.5 2017-05-22
|
78
|
+
## 0.10.5 - 2017-05-22
|
39
79
|
|
40
80
|
- [FIX] revert PG bind sniffing until it is properly tested
|
41
81
|
|
42
|
-
## 0.10.4 2017-05-17
|
82
|
+
## 0.10.4 - 2017-05-17
|
43
83
|
|
44
84
|
- [FEATURE] log binds for pg @neznauy
|
45
85
|
- [FIX] use async exec pg monkey patch instead of exec
|
@@ -48,25 +88,25 @@
|
|
48
88
|
- [FIX] ensure redis get_unviewed_ids returns only ids that exist
|
49
89
|
- [FIX] correctly respect SCRIPT in env if it is sniffed by middleware
|
50
90
|
|
51
|
-
## 0.10.2 2017-02-08
|
91
|
+
## 0.10.2 - 2017-02-08
|
52
92
|
|
53
93
|
- [FIX] improve turbolinks support
|
54
94
|
- [FEATURE] make location of mini_profiler injection customizable
|
55
95
|
|
56
|
-
## 0.10.1 2016-05-18
|
96
|
+
## 0.10.1 - 2016-05-18
|
57
97
|
|
58
98
|
- [FEATURE] push forward the security checks so no work is ever done if a valid production
|
59
99
|
cookie is not available (@sam)
|
60
100
|
|
61
|
-
## 0.9.9.2 2016-03-06
|
101
|
+
## 0.9.9.2 - 2016-03-06
|
62
102
|
|
63
103
|
- [FEATURE] on pageTransition collapse previously expanded timings
|
64
104
|
|
65
|
-
## 0.9.9.1 2016-03-06
|
105
|
+
## 0.9.9.1 - 2016-03-06
|
66
106
|
|
67
107
|
- [FEATURE] expost MiniProfiler.pageTransition() for use by SPA web apps (@sam)
|
68
108
|
|
69
|
-
## 0.9.9 2016-03-06
|
109
|
+
## 0.9.9 - 2016-03-06
|
70
110
|
|
71
111
|
- [FIX] removes alias_method_chain in favor of alias_method until Ruby 1.9.3 (@ayfredlund)
|
72
112
|
- [FIX] Dont block mongo when already patched for another db (@rrooding @kbrock)
|
@@ -122,7 +162,7 @@
|
|
122
162
|
- [FIXED] Possible XSS (admin only)
|
123
163
|
- [FIXED] Corrected Sql patching to avoid setting instance vars on nil which is frozen (thanks Andy, huoxito)
|
124
164
|
|
125
|
-
## 0.9.0.pre - 2013-12-
|
165
|
+
## 0.9.0.pre - 2013-12-05 (Sam Saffron)
|
126
166
|
- Bumped up version to reflect the stability of the project
|
127
167
|
- [IMPROVED] Reports for pp=profile-gc
|
128
168
|
- [IMPROVED] pp=flamegraph&flamegraph_sample_rate=1 , allow you to specify sampling rates
|
@@ -132,7 +172,7 @@
|
|
132
172
|
config.assets.prefix path since developers can rename the path to serve Asset Pipeline
|
133
173
|
files from
|
134
174
|
|
135
|
-
## 2013-09-03
|
175
|
+
## 0.1.31 - 2013-09-03
|
136
176
|
- [IMPROVED] Flamegraph now has much increased fidelity
|
137
177
|
- [REMOVED] Ripped out flamegraph so it can be isolated into a gem
|
138
178
|
- [REMOVED] Ripped out pp=sample it just was never really used
|
@@ -188,13 +228,13 @@
|
|
188
228
|
- [ADDED] New MemchacedStore
|
189
229
|
- [ADDED] Rails 4 support
|
190
230
|
|
191
|
-
## 2012-09-12 (Sam Saffron)
|
231
|
+
## 0.1.20 - 2012-09-12 (Sam Saffron)
|
192
232
|
- [ADDED] pp=profile-gc: allows you to profile the GC in Ruby 1.9.3
|
193
233
|
|
194
234
|
## 0.1.19 - 2012-09-10 (Sam Saffron)
|
195
235
|
- [FIXED] Compatibility issue with Ruby 1.8.7
|
196
236
|
|
197
|
-
## 0.1.17 - 2012-09-
|
237
|
+
## 0.1.17 - 2012-09-07 (Sam Saffron)
|
198
238
|
- [FIXED] pp=sample was bust unless stacktrace was installed
|
199
239
|
|
200
240
|
## 0.1.16 - 2012-09-05 (Sam Saffron)
|
@@ -218,10 +258,10 @@
|
|
218
258
|
## 0.1.12.pre - 2012-08-20 (Sam Saffron)
|
219
259
|
- [IMPROVED] Cap X-MiniProfiler-Ids at 10, otherwise the header can get killed
|
220
260
|
|
221
|
-
## 2012-08-10 (Sam Saffron)
|
261
|
+
## 0.1.11.pre - 2012-08-10 (Sam Saffron)
|
222
262
|
- [ADDED] Basic prepared statement profiling for Postgres
|
223
263
|
|
224
|
-
## 2012-08-07 (Sam Saffron)
|
264
|
+
## 0.1.10 - 2012-08-07 (Sam Saffron)
|
225
265
|
- [ADDED] Option to disable profiler for the current session (pp=disable / pp=enable)
|
226
266
|
- [ADDED] yajl compatability contributed by Sven Riedel
|
227
267
|
|
@@ -235,7 +275,7 @@
|
|
235
275
|
- [ADDED] First Paint time for Google Chrome
|
236
276
|
- [FIXED] Ensure non Rails installs have mini profiler
|
237
277
|
|
238
|
-
## 2012-07-12 (Sam Saffron)
|
278
|
+
## 0.1.6 - 2012-07-12 (Sam Saffron)
|
239
279
|
- [ADDED] Native PG and MySql2 interceptors, this gives way more accurate times
|
240
280
|
- [ADDED] some more client probing built in to rails
|
241
281
|
- [IMPROVED] Refactored context so its a proper class and not a hash
|
@@ -249,7 +289,7 @@
|
|
249
289
|
production
|
250
290
|
- [IMPROVED] Cleaned up railties, got rid of the post authorize callback
|
251
291
|
|
252
|
-
## 2012-06-28 (Sam Saffron)
|
292
|
+
## 0.1.1 - 2012-06-28 (Sam Saffron)
|
253
293
|
- [ADDED] Started change log
|
254
294
|
- [ADDED] added MemcacheStore
|
255
295
|
- [IMPROVED] Corrected profiler so it properly captures POST requests (was supressing non 200s)
|
data/README.md
CHANGED
@@ -19,12 +19,11 @@ Middleware that displays speed badge for every html page. Designed to work both
|
|
19
19
|
|
20
20
|
## rack-mini-profiler needs your help
|
21
21
|
|
22
|
-
We have decided to restructure our repository so there is a central UI repo and the various language
|
22
|
+
We have decided to restructure our repository so there is a central UI repo and the various language implementations have their own.
|
23
23
|
|
24
24
|
**WE NEED HELP.**
|
25
25
|
|
26
|
-
-
|
27
|
-
- Migrating the internal data structures [per the spec](https://github.com/MiniProfiler/ui)
|
26
|
+
- Help [triage issues](https://www.codetriage.com/miniprofiler/rack-mini-profiler) [](https://www.codetriage.com/miniprofiler/rack-mini-profiler)
|
28
27
|
|
29
28
|
If you feel like taking on any of this start an issue and update us on your progress.
|
30
29
|
|
@@ -54,7 +53,7 @@ All you have to do is to include the Gem and you're good to go in development. S
|
|
54
53
|
|
55
54
|
#### Rails and manual initialization
|
56
55
|
|
57
|
-
In case you need to make sure rack_mini_profiler initialized
|
56
|
+
In case you need to make sure rack_mini_profiler is initialized after all other gems, or you want to execute some code before rack_mini_profiler required:
|
58
57
|
|
59
58
|
```ruby
|
60
59
|
gem 'rack-mini-profiler', require: false
|
@@ -187,6 +186,13 @@ In those cases use:
|
|
187
186
|
Rack::MiniProfiler.config.authorization_mode = :whitelist
|
188
187
|
```
|
189
188
|
|
189
|
+
When deciding to fully profile a page mini profiler consults with the `authorization_mode`
|
190
|
+
|
191
|
+
By default in production we attempt to set the authorization mode to `:whitelist` meaning that end user will only be able to see requests where somewhere `Rack::MiniProfiler.authorize_request` is invoked.
|
192
|
+
|
193
|
+
In development we run in the `:allow_all` authorization mode meaning every request is profiled and displayed to the end user.
|
194
|
+
|
195
|
+
|
190
196
|
## Configuration
|
191
197
|
|
192
198
|
Various aspects of rack-mini-profiler's behavior can be configured when your app boots.
|
@@ -221,8 +227,7 @@ Rack::MiniProfiler.config.storage = Rack::MiniProfiler::MemoryStore
|
|
221
227
|
|
222
228
|
# set RedisStore
|
223
229
|
if Rails.env.production?
|
224
|
-
|
225
|
-
Rack::MiniProfiler.config.storage_options = { :host => uri.host, :port => uri.port, :password => uri.password }
|
230
|
+
Rack::MiniProfiler.config.storage_options = { url: ENV["REDIS_SERVER_URL"] }
|
226
231
|
Rack::MiniProfiler.config.storage = Rack::MiniProfiler::RedisStore
|
227
232
|
end
|
228
233
|
```
|
@@ -291,6 +296,9 @@ You need to inject the following in your SPA to load MiniProfiler's speed badge
|
|
291
296
|
|
292
297
|
_Note:_ The GUID (`data-version` and the `?v=` parameter on the `src`) will change with each release of `rack_mini_profiler`. The MiniProfiler's speed badge will continue to work, although you will have to change the GUID to expire the script to fetch the most recent version.
|
293
298
|
|
299
|
+
#### Using MiniProfiler's built in route for apps without HTML responses
|
300
|
+
MiniProfiler also ships with a `/rack-mini-profiler/requests` route that displays the speed badge on a blank HTML page. This can be useful when profiling an application that does not render HTML.
|
301
|
+
|
294
302
|
### Configuration Options
|
295
303
|
|
296
304
|
You can set configuration options using the configuration accessor on `Rack::MiniProfiler`.
|
@@ -310,18 +318,18 @@ skip_paths|`[]`|Paths that skip profiling.
|
|
310
318
|
skip_schema_queries|Rails dev: `'true'`<br>Othwerwise: `'false'`|`'true'` to log schema queries.
|
311
319
|
auto_inject|`true`|`true` to inject the miniprofiler script in the page.
|
312
320
|
backtrace_ignores|`[]`|Regexes of lines to be removed from backtraces.
|
313
|
-
backtrace_includes|Rails: `[/^\/?(app
|
321
|
+
backtrace_includes|Rails: `[/^\/?(app\|config\|lib\|test)/]`<br>Rack: `[]`|Regexes of lines to keep in backtraces.
|
314
322
|
backtrace_remove|rails: `Rails.root`<br>Rack: `nil`|A string or regex to remove part of each line in the backtrace.
|
315
323
|
toggle_shortcut|Alt+P|Keyboard shortcut to toggle the mini_profiler's visibility. See [jquery.hotkeys](https://github.com/jeresig/jquery.hotkeys).
|
316
324
|
start_hidden|`false`|`false` to make mini_profiler visible on page load.
|
317
325
|
backtrace_threshold_ms|`0`|Minimum SQL query elapsed time before a backtrace is recorded.
|
318
326
|
flamegraph_sample_rate|`0.5`|How often to capture stack traces for flamegraphs in milliseconds.
|
319
|
-
disable_env_dump|`false`|`true` disables `?pp=env`, which prevents sending ENV vars over HTTP.
|
320
327
|
base_url_path|`'/mini-profiler-resources/'`|Path for assets; added as a prefix when naming assets and sought when responding to requests.
|
321
328
|
collapse_results|`true`|If multiple timing results exist in a single page, collapse them till clicked.
|
322
329
|
max_traces_to_show|20|Maximum number of mini profiler timing blocks to show on one page
|
323
330
|
html_container|`body`|The HTML container (as a jQuery selector) to inject the mini_profiler UI into
|
324
331
|
show_total_sql_count|`false`|Displays the total number of SQL executions.
|
332
|
+
enable_advanced_debugging_tools|`false`|Enables sensitive debugging tools that can be used via the UI. In production we recommend keeping this disabled as memory and environment debugging tools can expose contents of memory that may contain passwords.
|
325
333
|
|
326
334
|
### Custom middleware ordering (required if using `Rack::Deflate` with Rails)
|
327
335
|
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/* Laura Doktorova https://github.com/olado/doT */
|
2
|
+
!function(){"use strict";function e(n,t,r){return("string"==typeof t?t:t.toString()).replace(n.define||a,function(e,t,o,a){return 0===t.indexOf("def.")&&(t=t.substring(4)),t in r||(":"===o?(n.defineParams&&a.replace(n.defineParams,function(e,n,o){r[t]={arg:n,text:o}}),t in r||(r[t]=a)):new Function("def","def['"+t+"']="+a)(r)),""}).replace(n.use||a,function(t,o){n.useParams&&(o=o.replace(n.useParams,function(e,n,t,o){if(r[t]&&r[t].arg&&o){var a=(t+":"+o).replace(/'|\\/g,"_");return r.__exp=r.__exp||{},r.__exp[a]=r[t].text.replace(new RegExp("(^|[^\\w$])"+r[t].arg+"([^\\w$])","g"),"$1"+o+"$2"),n+"def.__exp['"+a+"']"}}));var a=new Function("def","return "+o)(r);return a?e(n,a,r):a})}function n(e){return e.replace(/\\('|\\)/g,"$1").replace(/[\r\t\n]/g," ")}var t,r={engine:"doT",version:"1.1.1",templateSettings:{evaluate:/\{\{([\s\S]+?(\}?)+)\}\}/g,interpolate:/\{\{=([\s\S]+?)\}\}/g,encode:/\{\{!([\s\S]+?)\}\}/g,use:/\{\{#([\s\S]+?)\}\}/g,useParams:/(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,define:/\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,defineParams:/^\s*([\w$]+):([\s\S]+)/,conditional:/\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,iterate:/\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,varname:"it",strip:!0,append:!0,selfcontained:!1,doNotSkipEncoded:!1},template:void 0,compile:void 0,log:!0};r.encodeHTMLSource=function(e){var n={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},t=e?/[&<>"'\/]/g:/&(?!#?\w+;)|<|>|"|'|\//g;return function(e){return e?e.toString().replace(t,function(e){return n[e]||e}):""}},t=function(){return this||(0,eval)("this")}(),"undefined"!=typeof module&&module.exports?module.exports=r:"function"==typeof define&&define.amd?define(function(){return r}):t.doT=r;var o={append:{start:"'+(",end:")+'",startencode:"'+encodeHTML("},split:{start:"';out+=(",end:");out+='",startencode:"';out+=encodeHTML("}},a=/$^/;r.template=function(c,i,u){i=i||r.templateSettings;var d,s,p=i.append?o.append:o.split,l=0,f=i.use||i.define?e(i,c,u||{}):c;f=("var out='"+(i.strip?f.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""):f).replace(/'|\\/g,"\\$&").replace(i.interpolate||a,function(e,t){return p.start+n(t)+p.end}).replace(i.encode||a,function(e,t){return d=!0,p.startencode+n(t)+p.end}).replace(i.conditional||a,function(e,t,r){return t?r?"';}else if("+n(r)+"){out+='":"';}else{out+='":r?"';if("+n(r)+"){out+='":"';}out+='"}).replace(i.iterate||a,function(e,t,r,o){return t?(l+=1,s=o||"i"+l,t=n(t),"';var arr"+l+"="+t+";if(arr"+l+"){var "+r+","+s+"=-1,l"+l+"=arr"+l+".length-1;while("+s+"<l"+l+"){"+r+"=arr"+l+"["+s+"+=1];out+='"):"';} } out+='"}).replace(i.evaluate||a,function(e,t){return"';"+n(t)+"out+='"})+"';return out;").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/(\s|;|\}|^|\{)out\+='';/g,"$1").replace(/\+''/g,""),d&&(i.selfcontained||!t||t._encodeHTML||(t._encodeHTML=r.encodeHTMLSource(i.doNotSkipEncoded)),f="var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("+r.encodeHTMLSource.toString()+"("+(i.doNotSkipEncoded||"")+"));"+f);try{return new Function(i.varname,f)}catch(e){throw"undefined"!=typeof console&&console.log("Could not create a template function: "+f),e}},r.compile=function(e,n){return r.template(e,null,n)}}();
|
data/lib/html/includes.css
CHANGED
@@ -1,9 +1,29 @@
|
|
1
1
|
@charset "UTF-8";
|
2
|
-
.profiler-result,
|
2
|
+
.profiler-result,
|
3
|
+
.profiler-queries {
|
3
4
|
color: #555;
|
4
5
|
line-height: 1;
|
5
6
|
font-size: 12px; }
|
6
|
-
.profiler-result pre,
|
7
|
+
.profiler-result pre,
|
8
|
+
.profiler-result code,
|
9
|
+
.profiler-result label,
|
10
|
+
.profiler-result table,
|
11
|
+
.profiler-result tbody,
|
12
|
+
.profiler-result thead,
|
13
|
+
.profiler-result tfoot,
|
14
|
+
.profiler-result tr,
|
15
|
+
.profiler-result th,
|
16
|
+
.profiler-result td,
|
17
|
+
.profiler-queries pre,
|
18
|
+
.profiler-queries code,
|
19
|
+
.profiler-queries label,
|
20
|
+
.profiler-queries table,
|
21
|
+
.profiler-queries tbody,
|
22
|
+
.profiler-queries thead,
|
23
|
+
.profiler-queries tfoot,
|
24
|
+
.profiler-queries tr,
|
25
|
+
.profiler-queries th,
|
26
|
+
.profiler-queries td {
|
7
27
|
margin: 0;
|
8
28
|
padding: 0;
|
9
29
|
border: 0;
|
@@ -13,15 +33,21 @@
|
|
13
33
|
background-color: transparent;
|
14
34
|
overflow: visible;
|
15
35
|
max-height: none; }
|
16
|
-
.profiler-result table,
|
36
|
+
.profiler-result table,
|
37
|
+
.profiler-queries table {
|
17
38
|
border-collapse: collapse;
|
18
39
|
border-spacing: 0; }
|
19
|
-
.profiler-result a,
|
40
|
+
.profiler-result a,
|
41
|
+
.profiler-result a:hover,
|
42
|
+
.profiler-queries a,
|
43
|
+
.profiler-queries a:hover {
|
20
44
|
cursor: pointer;
|
21
|
-
color: #
|
22
|
-
.profiler-result a,
|
45
|
+
color: #0077cc; }
|
46
|
+
.profiler-result a,
|
47
|
+
.profiler-queries a {
|
23
48
|
text-decoration: none; }
|
24
|
-
.profiler-result a:hover,
|
49
|
+
.profiler-result a:hover,
|
50
|
+
.profiler-queries a:hover {
|
25
51
|
text-decoration: underline; }
|
26
52
|
|
27
53
|
.profiler-result {
|
@@ -38,9 +64,13 @@
|
|
38
64
|
color: #767676; }
|
39
65
|
.profiler-result .profiler-trivial {
|
40
66
|
display: none; }
|
41
|
-
.profiler-result .profiler-trivial td,
|
67
|
+
.profiler-result .profiler-trivial td,
|
68
|
+
.profiler-result .profiler-trivial td * {
|
42
69
|
color: #767676 !important; }
|
43
|
-
.profiler-result pre,
|
70
|
+
.profiler-result pre,
|
71
|
+
.profiler-result code,
|
72
|
+
.profiler-result .profiler-number,
|
73
|
+
.profiler-result .profiler-unit {
|
44
74
|
font-family: Consolas, monospace, serif; }
|
45
75
|
.profiler-result .profiler-number {
|
46
76
|
color: #111; }
|
@@ -54,7 +84,8 @@
|
|
54
84
|
background-color: #fff;
|
55
85
|
color: #767676;
|
56
86
|
text-align: right; }
|
57
|
-
.profiler-result .profiler-timings th,
|
87
|
+
.profiler-result .profiler-timings th,
|
88
|
+
.profiler-result .profiler-timings td {
|
58
89
|
white-space: nowrap; }
|
59
90
|
.profiler-result .profiler-timings .profiler-duration-with-children {
|
60
91
|
display: none; }
|
@@ -63,8 +94,9 @@
|
|
63
94
|
text-align: right; }
|
64
95
|
.profiler-result .profiler-timings .profiler-indent {
|
65
96
|
letter-spacing: 4px; }
|
66
|
-
.profiler-result .profiler-timings .profiler-queries-show .profiler-number,
|
67
|
-
|
97
|
+
.profiler-result .profiler-timings .profiler-queries-show .profiler-number,
|
98
|
+
.profiler-result .profiler-timings .profiler-queries-show .profiler-unit {
|
99
|
+
color: #0077cc; }
|
68
100
|
.profiler-result .profiler-timings .profiler-queries-duration {
|
69
101
|
padding-left: 6px; }
|
70
102
|
.profiler-result .profiler-timings .profiler-percent-in-sql {
|
@@ -89,13 +121,15 @@
|
|
89
121
|
.profiler-result .profiler-queries tbody tr {
|
90
122
|
border-bottom: 1px solid #f1f1f1; }
|
91
123
|
.profiler-result .profiler-queries tr {
|
92
|
-
background-color: #
|
124
|
+
background-color: #fff; }
|
125
|
+
.profiler-result .profiler-queries tr.higlight-animate {
|
126
|
+
animation: highlight-in 3s; }
|
93
127
|
.profiler-result .profiler-queries tr.slow {
|
94
|
-
background-color: #
|
128
|
+
background-color: #fee; }
|
95
129
|
.profiler-result .profiler-queries tr.very-slow {
|
96
|
-
background-color: #
|
130
|
+
background-color: #fdd; }
|
97
131
|
.profiler-result .profiler-queries tr.very-very-slow {
|
98
|
-
background-color: #
|
132
|
+
background-color: #fcc; }
|
99
133
|
.profiler-result .profiler-queries pre {
|
100
134
|
font-family: Consolas, monospace, serif;
|
101
135
|
white-space: pre-wrap; }
|
@@ -110,12 +144,14 @@
|
|
110
144
|
text-align: left; }
|
111
145
|
.profiler-result .profiler-queries td:last-child {
|
112
146
|
padding-right: 25px; }
|
113
|
-
.profiler-result .profiler-queries .profiler-since-start,
|
147
|
+
.profiler-result .profiler-queries .profiler-since-start,
|
148
|
+
.profiler-result .profiler-queries .profiler-duration {
|
114
149
|
text-align: right; }
|
115
150
|
.profiler-result .profiler-queries .profiler-info div {
|
116
151
|
text-align: right;
|
117
152
|
margin-bottom: 5px; }
|
118
|
-
.profiler-result .profiler-queries .profiler-gap-info,
|
153
|
+
.profiler-result .profiler-queries .profiler-gap-info,
|
154
|
+
.profiler-result .profiler-queries .profiler-gap-info td {
|
119
155
|
background-color: #ccc; }
|
120
156
|
.profiler-result .profiler-queries .profiler-gap-info .profiler-unit {
|
121
157
|
color: #777; }
|
@@ -147,9 +183,15 @@
|
|
147
183
|
color: blue; }
|
148
184
|
.profiler-result .profiler-queries .dec {
|
149
185
|
color: purple; }
|
150
|
-
.profiler-result .profiler-warning,
|
186
|
+
.profiler-result .profiler-warning,
|
187
|
+
.profiler-result .profiler-warning *,
|
188
|
+
.profiler-result .profiler-warning .profiler-queries-show,
|
189
|
+
.profiler-result .profiler-warning .profiler-queries-show .profiler-unit {
|
151
190
|
color: #f00; }
|
152
|
-
.profiler-result .profiler-warning:hover,
|
191
|
+
.profiler-result .profiler-warning:hover,
|
192
|
+
.profiler-result .profiler-warning *:hover,
|
193
|
+
.profiler-result .profiler-warning .profiler-queries-show:hover,
|
194
|
+
.profiler-result .profiler-warning .profiler-queries-show .profiler-unit:hover {
|
153
195
|
color: #f00; }
|
154
196
|
.profiler-result .profiler-nuclear {
|
155
197
|
color: #f00;
|
@@ -165,39 +207,52 @@
|
|
165
207
|
top: 0px; }
|
166
208
|
.profiler-results.profiler-top.profiler-left {
|
167
209
|
left: 0px; }
|
168
|
-
.profiler-results.profiler-top.profiler-left.profiler-no-controls .profiler-totals,
|
210
|
+
.profiler-results.profiler-top.profiler-left.profiler-no-controls .profiler-totals,
|
211
|
+
.profiler-results.profiler-top.profiler-left.profiler-no-controls .profiler-result:last-child .profiler-button,
|
212
|
+
.profiler-results.profiler-top.profiler-left .profiler-controls {
|
169
213
|
-webkit-border-bottom-right-radius: 10px;
|
170
214
|
-moz-border-radius-bottomright: 10px;
|
171
215
|
border-bottom-right-radius: 10px; }
|
172
|
-
.profiler-results.profiler-top.profiler-left .profiler-button,
|
216
|
+
.profiler-results.profiler-top.profiler-left .profiler-button,
|
217
|
+
.profiler-results.profiler-top.profiler-left .profiler-controls {
|
173
218
|
border-right: 1px solid #888; }
|
174
219
|
.profiler-results.profiler-top.profiler-right {
|
175
220
|
right: 0px; }
|
176
|
-
.profiler-results.profiler-top.profiler-right.profiler-no-controls .profiler-totals,
|
221
|
+
.profiler-results.profiler-top.profiler-right.profiler-no-controls .profiler-totals,
|
222
|
+
.profiler-results.profiler-top.profiler-right.profiler-no-controls .profiler-result:last-child .profiler-button,
|
223
|
+
.profiler-results.profiler-top.profiler-right .profiler-controls {
|
177
224
|
-webkit-border-bottom-left-radius: 10px;
|
178
225
|
-moz-border-radius-bottomleft: 10px;
|
179
226
|
border-bottom-left-radius: 10px; }
|
180
|
-
.profiler-results.profiler-top.profiler-right .profiler-button,
|
227
|
+
.profiler-results.profiler-top.profiler-right .profiler-button,
|
228
|
+
.profiler-results.profiler-top.profiler-right .profiler-controls {
|
181
229
|
border-left: 1px solid #888; }
|
182
230
|
.profiler-results.profiler-bottom {
|
183
231
|
bottom: 0px; }
|
184
232
|
.profiler-results.profiler-bottom.profiler-left {
|
185
233
|
left: 0px; }
|
186
|
-
.profiler-results.profiler-bottom.profiler-left.profiler-no-controls .profiler-totals,
|
234
|
+
.profiler-results.profiler-bottom.profiler-left.profiler-no-controls .profiler-totals,
|
235
|
+
.profiler-results.profiler-bottom.profiler-left.profiler-no-controls .profiler-result:first-child .profiler-button,
|
236
|
+
.profiler-results.profiler-bottom.profiler-left .profiler-controls {
|
187
237
|
-webkit-border-top-right-radius: 10px;
|
188
238
|
-moz-border-radius-topright: 10px;
|
189
239
|
border-top-right-radius: 10px; }
|
190
|
-
.profiler-results.profiler-bottom.profiler-left .profiler-button,
|
240
|
+
.profiler-results.profiler-bottom.profiler-left .profiler-button,
|
241
|
+
.profiler-results.profiler-bottom.profiler-left .profiler-controls {
|
191
242
|
border-right: 1px solid #888; }
|
192
243
|
.profiler-results.profiler-bottom.profiler-right {
|
193
244
|
right: 0px; }
|
194
|
-
.profiler-results.profiler-bottom.profiler-right.profiler-no-controls .profiler-totals,
|
245
|
+
.profiler-results.profiler-bottom.profiler-right.profiler-no-controls .profiler-totals,
|
246
|
+
.profiler-results.profiler-bottom.profiler-right.profiler-no-controls .profiler-result:first-child .profiler-button,
|
247
|
+
.profiler-results.profiler-bottom.profiler-right .profiler-controls {
|
195
248
|
-webkit-border-bottom-top-radius: 10px;
|
196
249
|
-moz-border-radius-topleft: 10px;
|
197
250
|
border-top-left-radius: 10px; }
|
198
|
-
.profiler-results.profiler-bottom.profiler-right .profiler-button,
|
251
|
+
.profiler-results.profiler-bottom.profiler-right .profiler-button,
|
252
|
+
.profiler-results.profiler-bottom.profiler-right .profiler-controls {
|
199
253
|
border-left: 1px solid #888; }
|
200
|
-
.profiler-results .profiler-button,
|
254
|
+
.profiler-results .profiler-button,
|
255
|
+
.profiler-results .profiler-controls {
|
201
256
|
display: none;
|
202
257
|
z-index: 2147483640;
|
203
258
|
border-bottom: 1px solid #888;
|
@@ -205,12 +260,17 @@
|
|
205
260
|
padding: 4px 7px;
|
206
261
|
text-align: right;
|
207
262
|
cursor: pointer; }
|
208
|
-
.profiler-results .profiler-button.profiler-button-active,
|
263
|
+
.profiler-results .profiler-button.profiler-button-active,
|
264
|
+
.profiler-results .profiler-controls.profiler-button-active {
|
209
265
|
background-color: maroon; }
|
210
|
-
.profiler-results .profiler-button.profiler-button-active .profiler-number,
|
266
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-number,
|
267
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-nuclear,
|
268
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-number,
|
269
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-nuclear {
|
211
270
|
color: #fff;
|
212
271
|
font-weight: bold; }
|
213
|
-
.profiler-results .profiler-button.profiler-button-active .profiler-unit,
|
272
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-unit,
|
273
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-unit {
|
214
274
|
color: #fff;
|
215
275
|
font-weight: normal; }
|
216
276
|
.profiler-results .profiler-totals .profiler-reqs {
|
@@ -258,7 +318,8 @@
|
|
258
318
|
display: none; }
|
259
319
|
.profiler-results .profiler-popup .profiler-info .profiler-server-time {
|
260
320
|
font-size: 95%; }
|
261
|
-
.profiler-results .profiler-popup .profiler-timings th,
|
321
|
+
.profiler-results .profiler-popup .profiler-timings th,
|
322
|
+
.profiler-results .profiler-popup .profiler-timings td {
|
262
323
|
padding-left: 6px;
|
263
324
|
padding-right: 6px; }
|
264
325
|
.profiler-results .profiler-popup .profiler-timings th {
|
@@ -313,7 +374,8 @@
|
|
313
374
|
padding-right: 20px;
|
314
375
|
font-size: 80%;
|
315
376
|
color: #888; }
|
316
|
-
.profiler-result-full .profiler-result .profiler-popup .profiler-timings td,
|
377
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings td,
|
378
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings th {
|
317
379
|
padding-left: 8px;
|
318
380
|
padding-right: 8px; }
|
319
381
|
.profiler-result-full .profiler-result .profiler-popup .profiler-timings th {
|
@@ -339,3 +401,9 @@
|
|
339
401
|
.profiler-result-full .profiler-result .profiler-queries .profiler-info div {
|
340
402
|
text-align: right;
|
341
403
|
margin-bottom: 5px; }
|
404
|
+
|
405
|
+
@keyframes highlight-in {
|
406
|
+
0% {
|
407
|
+
background: #ffffbb; }
|
408
|
+
100% {
|
409
|
+
background: #fff; } }
|