LCOV - code coverage report
Current view: top level - extra/webserver/webserver/gen - SPWebVirtual.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 2 50.0 %
Date: 2024-05-12 00:16:13 Functions: 1 2 50.0 %

          Line data    Source code
       1             : // Files for virtual filesystem
       2             : // Autogenerated by makefile (webserver.mk)
       3             : ///@ SP_EXCLUDE
       4             : #include "SPWebVirtualFile.h"
       5             : namespace STAPPLER_VERSIONIZED stappler::web {
       6             : 
       7           0 : const char * getCompileDate() { return __DATE__ " " __TIME__; }
       8          75 : Time getCompileUnixTime() { return SP_COMPILE_TIME; }
       9             : 
      10             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/js/shell.js 
      11             : static VirtualFile
      12             : _js_shell_js = VirtualFile::add("/js/shell.js", R"VirtualFile(var KawaiJson = function() {
      13             :         var init = false;
      14             : 
      15             :         var kawaiJson = {
      16             :                 ontoggle: function (event) {
      17             :                         var collapsed, target = event.target;
      18             :                         if (event.target.className == 'collapser') {
      19             :                                 collapsed = target.parentNode.getElementsByClassName('collapsible')[0];
      20             :                                 if (collapsed.parentNode.classList.contains("collapsed"))
      21             :                                         collapsed.parentNode.classList.remove("collapsed");
      22             :                                 else
      23             :                                         collapsed.parentNode.classList.add("collapsed");
      24             :                         }
      25             :                 },
      26             :                 addslashes: function (str) {
      27             :                         return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
      28             :                 },
      29             :                 recursive: function (parent, json, isLast) {
      30             :                         var ellipsis = document.createElement('span');
      31             :                         ellipsis.className = "ellipsis";
      32             :                         if (Array.isArray(json)) {
      33             :                                 this.addTextNode(parent, '[');
      34             :                                 parent.appendChild(ellipsis);
      35             :                         }
      36             :                         else if (typeof json === 'object' && json) {
      37             :                                 this.addTextNode(parent, '{');
      38             :                                 parent.appendChild(ellipsis);
      39             :                         }
      40             : 
      41             :                         var ul = document.createElement('ul');
      42             :                         ul.className = "obj collapsible";
      43             :                         
      44             :                         if (json != null) {
      45             :                                 var keys = Object.keys(json);
      46             :                                 for (var keys = Object.keys(json), i = 0, end = keys.length; i < end; i++) {
      47             :                                         var key = keys[i];
      48             :                                         var li = document.createElement('li');
      49             :                                         var keySetted = true;
      50             :                                         if (!isNaN(parseFloat(key)) && isFinite(key)) {
      51             :                                                 keySetted = false;
      52             :                                         }
      53             :                                         if (keySetted) {
      54             :                                                 var keySpan = document.createElement('span');
      55             :                                                 keySpan.className = "property";
      56             :                                                 keySpan.innerHTML = '<span class="quote">"</span>' + key + '<span class="quote">"</span>';
      57             :                                                 li.appendChild(keySpan);
      58             :                                         }
      59             :                                         var valSpan = document.createElement('span');
      60             : 
      61             :                                         if (typeof json[key] !== 'object' || json[key] == null) {
      62             :                                                 if (keySetted)
      63             :                                                         this.addTextNode(li, ': ');
      64             :                                                 switch (typeof json[key]) {
      65             :                                                         case 'boolean':
      66             :                                                                 valSpan.className = 'type-boolean';
      67             :                                                                 valSpan.innerHTML = json[key];
      68             :                                                                 break;
      69             :                                                         case 'object':
      70             :                                                                 valSpan.className = 'type-null';
      71             :                                                                 valSpan.innerHTML = 'null';
      72             :                                                                 break;
      73             :                                                         case 'number':
      74             :                                                                 valSpan.className = 'type-number';
      75             :                                                                 valSpan.innerHTML = json[key];
      76             :                                                                 break;
      77             :                                                         case 'string':
      78             :                                                                 valSpan.className = 'type-string';
      79             :                                                                 valSpan.innerHTML = '<span class="quote">"</span>' + this.addslashes(json[key]) + '<span class="quote">"</span>';
      80             :                                                                 break;
      81             :                                                 }
      82             :                                                 li.appendChild(valSpan);
      83             :                                                 if (i + 1 < end)
      84             :                                                         this.addTextNode(li, ',');
      85             :                                                 ul.appendChild(li);
      86             :                                         }
      87             :                                         else {
      88             :                                                 var collapser = document.createElement('div');
      89             :                                                 collapser.className = "collapser";
      90             : 
      91             :                                                 if (Array.isArray(json[key])) {
      92             :                                                         this.addTextNode(li, ': ');
      93             :                                                         li.appendChild(collapser);
      94             :                                                         this.recursive(li, json[key], i + 1 >= end);
      95             :                                                         ul.appendChild(li);
      96             :                                                 }
      97             :                                                 else {
      98             :                                                         if (keySetted)
      99             :                                                                 this.addTextNode(li, ': ');
     100             :                                                         li.appendChild(collapser);
     101             :                                                         this.recursive(li, json[key], i + 1 >= end);
     102             :                                                         ul.appendChild(li);
     103             :                                                 }
     104             : 
     105             :                                         }
     106             :                                 }
     107             : 
     108             :                                 if (Object.keys(json).length > 0)
     109             :                                         parent.appendChild(ul);
     110             :                         }
     111             : 
     112             :                         if (Array.isArray(json)) {
     113             :                                 if (!isLast) {
     114             :                                         this.addTextNode(parent, '],');
     115             :                                 }
     116             :                                 else {
     117             :                                         this.addTextNode(parent, ']');
     118             :                                 }
     119             :                         }
     120             :                         else if (typeof json === 'object' && json) {
     121             :                                 if (!isLast) {
     122             :                                         this.addTextNode(parent, '},');
     123             :                                 }
     124             :                                 else {
     125             :                                         this.addTextNode(parent, '}');
     126             :                                 }
     127             :                         }
     128             :                 },
     129             :                 addTextNode: function (parent, text) {
     130             :                         var el = document.createTextNode(text);
     131             :                         parent.appendChild(el);
     132             :                 },
     133             :                 parse: function (container, json) {
     134             :                         this.recursive(container, json, true);
     135             :                 },
     136             :         };
     137             :         
     138             :         return function(container, json) {
     139             :                 if (init == false) {
     140             :                         document.body.addEventListener('click', kawaiJson.ontoggle, false);
     141             :                         init = true;
     142             :                 }
     143             :                 kawaiJson.parse(container, json);
     144             :         };
     145             : }();
     146             : 
     147             : function escape(str) {
     148             :     var tagsToReplace = {
     149             :         '&': '&amp;',
     150             :         '<': '&lt;',
     151             :         '>': '&gt;'
     152             :     };
     153             :     return str.replace(/[&<>]/g, function(tag) {
     154             :         return tagsToReplace[tag] || tag;
     155             :     });
     156             : };
     157             : 
     158             : function upload(file, url, name) {
     159             :         var xhr = new XMLHttpRequest();
     160             :         var data = new FormData();
     161             :         data.append(name, file);
     162             : 
     163             :         var output = document.getElementById("output");
     164             :         var node = document.createElement("p");
     165             :         node = output.insertBefore(node, output.firstChild);
     166             :         node.innerHTML = "Upload started";
     167             : 
     168             :         xhr.onload = xhr.onerror = function() {
     169             :                 if (this.status == 200) {
     170             :                         push(this.response);
     171             :                 } else {
     172             :                         push("Upload error: " + this.status);
     173             :                 }
     174             :                 output.removeChild(node);
     175             :         };
     176             : 
     177             :         xhr.upload.onprogress = function(event) {
     178             :                 node.innerHTML = event.loaded + ' / ' + event.total;
     179             :         };
     180             : 
     181             :         xhr.open("POST", url, true);
     182             :         xhr.send(data);
     183             : }
     184             : 
     185             : function uploadWithData(data) {
     186             :         document.getElementById('fileSelector').click();
     187             : }
     188             : 
     189             : var ws;
     190             : var wsaddress = ((window.location.protocol == "https:") ? "wss:"
     191             :                 : "ws:")
     192             :                 + "//" + window.location.host + window.location.pathname
     193             : if ((typeof (WebSocket) == 'undefined')
     194             :                 && (typeof (MozWebSocket) != 'undefined')) {
     195             :         WebSocket = MozWebSocket;
     196             : }
     197             : function send(input) {
     198             :         if (ws) {
     199             :                 ws.send(input.value);
     200             :                 input.value = "";
     201             :         }
     202             : }
     203             : 
     204             : function init(consoleTarget) {
     205             :         document.getElementById("main").style.visibility = "hidden";
     206             :         ShellHistory(document.getElementById("input"), send);
     207             : 
     208             :         var fileUpload = document.getElementById("fileSelector");
     209             :         fileUpload.addEventListener("change", function(event) {
     210             :                 upload(event.target.files[0]);
     211             :         }, false);
     212             : 
     213             :         wsaddress = wsaddress + consoleTarget;
     214             : }
     215             : 
     216             : function push(data) {
     217             :         var output = document.getElementById("output");
     218             :         var node = document.createElement("p");
     219             :         if (data[0] == '{' || data[0] == '[') {
     220             :                 KawaiJson(node, JSON.parse(data));
     221             :         } else if (data[0] == '<') {
     222             :                 node.innerHTML = data;
     223             :         } else {
     224             :                 node.innerHTML = escape(data);
     225             :         }
     226             :         output.insertBefore(node, output.firstChild);
     227             : }
     228             : 
     229             : function connect() {
     230             :         ws = new WebSocket(wsaddress);
     231             :         ws.onopen = function(event) {
     232             :                 document.getElementById("main").style.visibility = "visible";
     233             :                 document.getElementById("login").style.display = "none";
     234             :                 document.getElementById("main").style.display = "block";
     235             :                 document.getElementById("output").innerHTML = "";
     236             :         };
     237             :         ws.onmessage = function(event) {
     238             :                 if (event.data[0] != ':') {
     239             :                         push(event.data);
     240             :                 } else if (event.data.startsWith(':upload:')) {
     241             :                         uploadWithData(JSON.parse(event.data.substr(8)));
     242             :                 }
     243             :         };
     244             :         ws.onerror = function(event) {
     245             :                 console.log(event);
     246             :         };
     247             :         ws.onclose = function(event) {
     248             :                 ws = null;
     249             :                 console.log(event);
     250             :                 document.getElementById("login").style.display = "block";
     251             :                 document.getElementById("main").style.display = "none";
     252             :         }
     253             :         return false;
     254             : }
     255             : 
     256             : function closeSocket() {
     257             :         ws.close();
     258             :         return false;
     259             : }
     260             : 
     261             : function ShellHistory(node, callback) {
     262             :         var history = {
     263             :                 log : [],
     264             :                 pos : 0
     265             :         }
     266             : 
     267             :         history["add"] = function(str) {
     268             :                 history.log[history.log.length] = str;
     269             :                 history.pos = history.log.length;
     270             :         };
     271             :         history["next"] = function() {
     272             :                 if (history.log.length == 0) {
     273             :                         return "";
     274             :                 }
     275             :                 if (history.pos <= 0) {
     276             :                         history.pos = -1;
     277             :                         return "";
     278             :                 }
     279             :                 history.pos --;
     280             :                 return history.log[history.pos];
     281             :         };
     282             :         history["prev"] = function() {
     283             :                 if (history.log.length == 0) {
     284             :                         return "";
     285             :                 }
     286             :                 if (history.pos >= history.log.length - 1) {
     287             :                         history.pos = history.log.length;
     288             :                         return "";
     289             :                 }
     290             :                 history.pos ++;
     291             :                 return history.log[history.pos];
     292             :         };
     293             : 
     294             :         node.onkeydown = function(ev) {
     295             :                 if (ev.keyCode == '38') {
     296             :                         node.value = history.next();
     297             :                 } else if (ev.keyCode == '40') {
     298             :                         node.value = history.prev();
     299             :                 } else if (ev.keyCode == '13') {
     300             :                         if (node.value != "") {
     301             :                                 history.add(node.value);
     302             :                                 callback(node);
     303             :                         }
     304             :                 }
     305             :         }
     306             : };
     307             : 
     308             : function SaveEditorContent(editor) {
     309             :         var xhr = new XMLHttpRequest();
     310             :         xhr.open("POST", window.location.pathname, true);
     311             : 
     312             :         xhr.setRequestHeader("Content-type", "application/markdown");
     313             :         
     314             :         xhr.onreadystatechange = function() {//Вызывает функцию при смене состояния.
     315             :                 if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
     316             :                         var jsonResponse = JSON.parse(xhr.responseText);
     317             :                         if (jsonResponse.OK) {
     318             :                                 window.location.reload();
     319             :                         }
     320             :                 }
     321             :         }
     322             :         xhr.send(editor.value());
     323             : }
     324             : 
     325             : var simplemde = null;
     326             : 
     327             : function ToggleEditor() {
     328             :         var editor = document.getElementById("editblock")
     329             :         var source = document.getElementById("sourceblock")
     330             :         
     331             :         if (SimpleMDE) {
     332             :                 var editorButtons = [
     333             :                         "bold", "italic", "heading", "|", "code", "unordered-list", "ordered-list", "|", "link",
     334             :                         {
     335             :                                 name: "toc",
     336             :                                 action: SimpleMDE.drawHorizontalRule,
     337             :                                 className: "fa fa-list-alt",
     338             :                                 title: "Insert TOC"
     339             :                         },
     340             :                         "|",
     341             :                         {
     342             :                                 name: "save",
     343             :                                 action: function saveContent(editor) {
     344             :                                         SaveEditorContent(editor)
     345             :                                 },
     346             :                                 className: "fa fa-floppy-o",
     347             :                                 title: "Save",
     348             :                         },
     349             :                         {
     350             :                                 name: "cancel",
     351             :                                 action: function cancel(editor) {
     352             :                                         var editor = document.getElementById("editblock")
     353             :                                         var source = document.getElementById("sourceblock")
     354             :                                         if (!editor.classList.contains("editorclosed")) {
     355             :                                                 editor.classList.add("editorclosed");
     356             :                                                 if (simplemde != null) {
     357             :                                                         simplemde.toTextArea();
     358             :                                                         simplemde = null;
     359             :                                                 }
     360             :                                                 source.classList.remove("editorclosed");
     361             :                                         }
     362             :                                 },
     363             :                                 className: "fa fa-times",
     364             :                                 title: "Cancel",
     365             :                         },
     366             :                 ];
     367             : 
     368             :                 if (editor.classList.contains("editorclosed")) {
     369             :                         editor.classList.remove("editorclosed");
     370             :                         if (simplemde == null) {
     371             :                                 simplemde = new SimpleMDE({
     372             :                                         element: document.getElementById("editor"),
     373             :                                         spellChecker: false,
     374             :                                         toolbar: editorButtons,
     375             :                                         insertTexts: {
     376             :                                                 horizontalRule: ["{{TOC}}"],
     377             :                                         },
     378             :                                         indentWithTabs: true,
     379             :                                         tabSize: 4,
     380             :                                         renderingConfig: {
     381             :                                                 codeSyntaxHighlighting: true
     382             :                                         }
     383             :                                 })
     384             :                         }
     385             :                         source.classList.add("editorclosed");
     386             :                 } else {
     387             :                         source.classList.remove("editorclosed");
     388             :                         editor.classList.add("editorclosed");
     389             :                         if (simplemde != null) {
     390             :                                 simplemde.toTextArea();
     391             :                                 simplemde = null;
     392             :                         }
     393             :                 }
     394             :         }
     395             :         return false;
     396             : }
     397             : 
     398             : function EditorDownShortcuts(e) {
     399             :         if (e.ctrlKey && e.which == 83) {
     400             :                 e.stopPropagation();
     401             :                 e.preventDefault();  
     402             :                 e.returnValue = false;
     403             :                 e.cancelBubble = true;
     404             :                 return false;
     405             :         }
     406             : }
     407             : 
     408             : function EditorUpShortcuts(e) {
     409             :         if (e.ctrlKey && e.which == 83) {
     410             :                 if (simplemde != null) {
     411             :                         SaveEditorContent(simplemde)
     412             :                 }
     413             :                 return false;
     414             :         } else if (e.ctrlKey && e.which == 69) {
     415             :                 if (simplemde == null) {
     416             :                         ToggleEditor()
     417             :                 }
     418             :                 return false;
     419             :         } else if (e.which == 27) {
     420             :                 if (simplemde != null) {
     421             :                         ToggleEditor()
     422             :                 }
     423             :                 return false;
     424             :         }
     425             : }
     426             : 
     427             : document.addEventListener('keydown', EditorDownShortcuts);
     428             : document.addEventListener('keyup', EditorUpShortcuts);
     429             : 
     430             : document.addEventListener('copy', (event) => {
     431             :         var data = document.getSelection();
     432             :         
     433             :         if (data.anchorNode.classList.contains('hljs-ln-line') || data.anchorNode.classList.contains('hljs-ln')) {
     434             :                 var str = data.toString()
     435             :                 str = str.replace(/\n\t\n/g, '\n');
     436             :                 str = str.replace(/\n \n/g, '\n\n');
     437             :                 
     438             :                 event.clipboardData.setData('text', str);
     439             :                 event.preventDefault();
     440             :         }
     441             : });
     442             : )VirtualFile");
     443             : 
     444             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/kawaiJson.css 
     445             : static VirtualFile
     446             : _css_kawaiJson_css = VirtualFile::add("/css/kawaiJson.css", R"VirtualFile(ul {
     447             :         list-style-type: none;
     448             :         padding: 0px;
     449             :         margin: 0px 0px 0px 26px;
     450             : }
     451             : 
     452             : li {
     453             :         position: relative;
     454             : }
     455             : 
     456             : .hoverable {
     457             :         transition: background-color .2s ease-out 0s;
     458             :         -webkit-transition: background-color .2s ease-out 0s;
     459             :         display: inline-block;
     460             : }
     461             : 
     462             : .hovered {
     463             :         transition-delay: .2s;
     464             :         -webkit-transition-delay: .2s;
     465             : }
     466             : 
     467             : .selected {
     468             :         outline-style: solid;
     469             :         outline-width: 1px;
     470             :         outline-style: dotted;
     471             : }
     472             : 
     473             : .collapsed>.collapsible {
     474             :         display: none;
     475             : }
     476             : 
     477             : .ellipsis {
     478             :         display: none;
     479             : }
     480             : 
     481             : .collapsed>.ellipsis {
     482             :         display: inherit;
     483             : }
     484             : 
     485             : .collapser {
     486             :         position: absolute;
     487             :         top: 1px;
     488             :         left: -1.5em;
     489             :         cursor: default;
     490             :         user-select: none;
     491             :         -webkit-user-select: none;
     492             : }
     493             : 
     494             : .status {
     495             :         position: fixed;
     496             :         left: 0px;
     497             :         bottom: 0px;
     498             :         min-width: 628px;
     499             :         border-color: #c2c2c2;
     500             :         border-top-width: 1px;
     501             :         border-right-width: 1px;
     502             :         border-bottom-width: 0px;
     503             :         border-left-width: 0px;
     504             :         border-style: solid;
     505             :         border-top-right-radius: 4px;
     506             :         height: 16px;
     507             :         padding-top: 2px;
     508             :         padding-bottom: 2px;
     509             :         padding-right: 7px;
     510             :         padding-left: 4px;
     511             :         font-family: sans-serif;
     512             :         font-size: 12px;        
     513             :         opacity: 0;
     514             :         background-color: #d2d2f6;
     515             :         color: #696969;
     516             :         transition: opacity .2s ease-out;       
     517             :         -webkit-transition: opacity .2s ease-out;
     518             :         user-select: none;
     519             :         -webkit-user-select: none;
     520             : }
     521             : 
     522             : .status:not(:empty ) {
     523             :         opacity: 1;
     524             : }
     525             : 
     526             : .toolbox {
     527             :         font-family: sans-serif;
     528             :         font-size: 13px;
     529             :         opacity: .25;
     530             :         background-color: #d2d2f6;
     531             :         position: fixed;
     532             :         right: 0px;
     533             :         top: 0px;
     534             :         border-color: #c2c2c2;
     535             :         border-bottom-width: 1px;
     536             :         border-left-width: 1px;
     537             :         border-top-width: 0px;
     538             :         border-right-width: 0px;
     539             :         border-style: solid;
     540             :         border-bottom-left-radius: 4px;
     541             :         padding-bottom: 3px;
     542             :         transition: opacity .2s ease-out;
     543             :         -webkit-transition: opacity .2s ease-out;
     544             :         cursor: default;
     545             :         user-select: none;
     546             :         -webkit-user-select: none;
     547             :         padding-left: 2px;
     548             : }
     549             : 
     550             : .toolbox:hover {
     551             :         opacity: 1;
     552             : }
     553             : 
     554             : .toolbox>* {
     555             :         padding-left: 3px;
     556             :         padding-right: 3px;
     557             : }
     558             : 
     559             : .toolbox>a {
     560             :         padding-left: 5px;
     561             : }
     562             : 
     563             : .toolbox>img {
     564             :         height: 14px;
     565             :         vertical-align: bottom;
     566             :         cursor: pointer;
     567             : }
     568             : 
     569             : #output {
     570             :         white-space: pre;
     571             :         font-family: monospace;
     572             : }
     573             : 
     574             : #output span {
     575             :         white-space: pre;
     576             :         font-family: monospace;
     577             : }
     578             : 
     579             : .property {
     580             :         font-weight: bold;
     581             : }
     582             : 
     583             : .type-null {
     584             :         color: gray;
     585             : }
     586             : 
     587             : .type-boolean {
     588             :         color: firebrick;
     589             : }
     590             : 
     591             : .type-number {
     592             :         color: blue;
     593             : }
     594             : 
     595             : .type-string {
     596             :         color: green;
     597             : }
     598             : 
     599             : .callback-function {
     600             :         color: gray;
     601             : }
     602             : 
     603             : .collapser:after {
     604             :         content: "-";
     605             : }
     606             : 
     607             : .collapsed > .collapser:after {
     608             :         content: "+";
     609             : }
     610             : 
     611             : .ellipsis:after {
     612             :         content: " … ";
     613             : }
     614             : 
     615             : .collapsible {
     616             :         margin-left: 2em;
     617             : }
     618             : 
     619             : .hoverable {
     620             :         padding-top: 1px;
     621             :         padding-bottom: 1px;
     622             :         padding-left: 2px;
     623             :         padding-right: 2px;
     624             :         border-radius: 2px;
     625             : }
     626             : 
     627             : .hovered {
     628             :         background-color: rgba(235, 238, 249, 1);  
     629             : }
     630             : 
     631             : .collapser {
     632             :         padding-right: 6px;
     633             :         padding-left: 6px;
     634             : }
     635             : 
     636             : .property > .quote { opacity: 0 }
     637             : )VirtualFile");
     638             : 
     639             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/md.css 
     640             : static VirtualFile
     641             : _css_md_css = VirtualFile::add("/css/md.css", R"VirtualFile(.docs {
     642             :         padding: 12px 0;
     643             : }
     644             : 
     645             : .docs > .contents {
     646             :         width: 320px;
     647             :         border-left: 1px #ccc solid;
     648             :         float: right;
     649             :         background: #fff;
     650             : }
     651             : 
     652             : .docs > .doc {
     653             :         margin-right: 320px;
     654             : }
     655             : 
     656             : .source {
     657             :         padding-left: 16px;
     658             :         padding-right: 16px;
     659             : }
     660             : 
     661             : .docs pre {
     662             :         margin-top: 0.9rem;
     663             :         margin-bottom: 0.9rem;
     664             :         padding: 4px;
     665             :         background-color: #e0f2f1;
     666             :         overflow: scroll;
     667             :         -moz-tab-size: 4; /* Firefox */
     668             :         tab-size: 4;
     669             : }
     670             : 
     671             : .docs code {
     672             :         color: black;
     673             :         background-color: #e0f2f1;
     674             : }
     675             : 
     676             : .docs p, .docs h4, .docs h5, .docs h6 {
     677             :         font-family: "Roboto";
     678             :         margin-top: 0.4rem;
     679             :         margin-bottom: 0.4rem;
     680             :         font-size: 1.1rem;
     681             :         line-height: 1.6rem;
     682             :         color: #333;
     683             : }
     684             : 
     685             : .docs li {
     686             :         font-family: "Roboto";
     687             :         margin: 0.15rem;
     688             :         padding: 0.15rem;
     689             : }
     690             : 
     691             : .docs h1 {
     692             :         margin-top: 1.1rem;
     693             :         margin-bottom: 0.5rem;
     694             :         font-family: "Roboto";
     695             :         font-weight: 400;
     696             :         font-size: 1.6rem;
     697             :         color: #666;
     698             :         background-color: #e0f2f1;
     699             : }
     700             : 
     701             : .docs h2 {
     702             :         margin-top: 1.1rem;
     703             :         margin-bottom: 0.5rem;
     704             :         font-family: "Roboto";
     705             :         font-weight: 500;
     706             :         font-size: 1.4rem;
     707             :         color: #333;
     708             :         background-color: #e0f2f1;
     709             : }
     710             : .docs h3 {
     711             :         margin-top: 1.1rem;
     712             :         margin-bottom: 0.5rem;
     713             :         font-family: "Roboto";
     714             :         font-weight: 500;
     715             :         font-size: 1.3rem;
     716             :         color: #666;
     717             :         background-color: #e0f2f1;
     718             : }
     719             : 
     720             : .docs .contents h1 {
     721             :         font-size: 1.3rem;
     722             :         color: #999;
     723             : }
     724             : 
     725             : .docs .contents h2 {
     726             :         font-size: 1.2rem;
     727             :         color: #999;
     728             : }
     729             : 
     730             : .source a {
     731             :         margin: 0;
     732             : }
     733             : 
     734             : /* for block of numbers */
     735             : .hljs-ln-numbers {
     736             :     user-select: none;
     737             :     text-align: center;
     738             :     color: #ccc;
     739             :     border-right: 1px solid #CCC;
     740             :     vertical-align: top;
     741             :         padding-right: 0.3rem !important;
     742             :     /* your custom style here */
     743             : }
     744             : 
     745             : .hljs-ln-code .hljs-ln-line {
     746             :         user-select: text;
     747             : }
     748             : 
     749             : table.hljs-ln {
     750             :         user-select: none;
     751             : })VirtualFile");
     752             : 
     753             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/style.css 
     754             : static VirtualFile
     755             : _css_style_css = VirtualFile::add("/css/style.css", R"VirtualFile(html {
     756             :         font-size: 18px;
     757             : }
     758             : 
     759             : body {
     760             :         background: #aaa;
     761             :         margin: 0;
     762             :         padding: 0;
     763             : }
     764             : 
     765             : h6.components {
     766             :         font-family: "Roboto";
     767             :         margin: 0;
     768             :         padding: 0 0 0 1rem;
     769             :         font-weigth: bold;
     770             :         font-size: 0.9rem;
     771             :         color: #999;
     772             : }
     773             : 
     774             : span {
     775             :         font-family: "Roboto";
     776             : }
     777             : 
     778             : span.method {
     779             :         font-weight: bold;
     780             :         color: #666;
     781             : }
     782             : 
     783             : span.pattern {
     784             :         font-family: "monospace";
     785             :         color: #333;
     786             : }
     787             : 
     788             : .body {
     789             :         margin: 1% auto;
     790             :         padding: 4px;
     791             :         max-width: 1380px;
     792             :         width: 98%;
     793             :         background: #fff;
     794             :         box-shadow: 0 2px 8px #666;
     795             : }
     796             : 
     797             : .title {
     798             :         margin: 16px;
     799             :         border-bottom: 1px #ccc solid;
     800             :         display: flex;
     801             :         justify-content: space-between;
     802             : }
     803             : 
     804             : .title > h1 {
     805             :         font-family: "Roboto";
     806             :         font-size: 1.2rem;
     807             :         margin: 0;
     808             :         padding: 0;
     809             :         font-weight: 300;
     810             : }
     811             : 
     812             : .title > h1 > span.name {
     813             :         font-weight: 500;
     814             : }
     815             : 
     816             : .title > p.nav {
     817             :         text-align: right;
     818             :         font-family: "Roboto";
     819             :         font-size: 1.2rem;
     820             :         margin: 0;
     821             :         padding: 0;
     822             : }
     823             : 
     824             : a {
     825             :         font-family: "Roboto";
     826             :         margin: 6px;
     827             :         color: #00bfa5ff;
     828             :         font-weight: 500;
     829             :         font-size: 1.1rem;
     830             : }
     831             : 
     832             : .title > p.nav > span.id {
     833             :         color: #999;
     834             : }
     835             : 
     836             : .main {
     837             :         margin: 16px;
     838             : }
     839             : 
     840             : .main > form#setup > input {
     841             :         width: 160px;
     842             :         display: block;
     843             :         margin: 4px auto;
     844             :         padding: 0;
     845             : }
     846             : 
     847             : div.map {
     848             :         padding-left: 2rem;
     849             : }
     850             : 
     851             : div.map > p.components {
     852             :         padding: 0;
     853             :         margin: 0;
     854             : }
     855             : 
     856             : p.components > span.component {
     857             :         font-family: "Roboto";
     858             :         display: inline-block;
     859             :         background-color: #64ffda;
     860             :         outline: 1px #00bfa5 solid;
     861             :         padding: 2px 6px;
     862             :         margin: 4px;
     863             : }
     864             : 
     865             : p.components span.version {
     866             :         color: #999;
     867             : }
     868             : 
     869             : p.components > span.db {
     870             :         background-color: #ffd180;
     871             :         outline: 1px #e65100 solid;
     872             : }
     873             : 
     874             : p.components > span.root {
     875             :         background-color: #ea80fc;
     876             :         outline: 1px #6a1b9a solid;
     877             : }
     878             : p.components > span.rootserver {
     879             :         background-color: #eee;
     880             :         outline: 1px #999 solid;
     881             : }
     882             : p.components > span.map {
     883             :         background-color: #ccc;
     884             :         outline: 1px #999 solid;
     885             : }
     886             : 
     887             : p.components > span.scheme {
     888             :         background-color: #8c9eff;
     889             :         outline: 1px #304ffe solid;
     890             : }
     891             : 
     892             : #output p {
     893             :         margin: 0;
     894             :         padding: 0;
     895             :         white-space: pre-wrap;
     896             : }
     897             : 
     898             : .content {
     899             :         width: 99%;
     900             :         height: 1600px;
     901             :         padding-left: 10px;
     902             :         white-space: pre-wrap;
     903             :         font-family: monospace;
     904             :         -moz-tab-size: 4;
     905             : }
     906             : 
     907             : .key { font-weight: bold }
     908             : .bool,.integer,.float { color: blue }
     909             : .string,.bytes { color: green }
     910             : .null { color: red }
     911             : .key > .quote { opacity: 0 }
     912             : 
     913             : .actions { }
     914             : 
     915             : .delete {
     916             :         color: white;
     917             :         background: #d50000
     918             : }
     919             : 
     920             : .edit {
     921             :         color: white;
     922             :         background: #303f9f
     923             : }
     924             : 
     925             : .edit,.delete {
     926             :         opacity: 0.4;
     927             :         line-height: 3em;
     928             :         padding: 0.5em;
     929             :         text-decoration: none;
     930             :         border-radius: 0.5em;
     931             :         box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5);
     932             :         -webkit-user-select: none;
     933             :         -moz-user-select: none;
     934             :         -ms-user-select: none;
     935             :         -webkit-touch-callout: none;
     936             : }
     937             : 
     938             : .edit:hover,.delete:hover { opacity: 1.0 }
     939             : .error { color: red }
     940             : 
     941             : pre {
     942             :         margin: 0;
     943             :         padding: 0;
     944             : }
     945             : 
     946             : .code {
     947             :         font-family: monospace;
     948             :         margin: 0;
     949             :         padding: 0;
     950             :         -moz-tab-size: 4;
     951             : }
     952             : 
     953             : span.time {
     954             :         font-family: monospace;
     955             :         color: gray;
     956             : }
     957             : 
     958             : span.ip {
     959             :         font-family: monospace;
     960             :         color: blue;
     961             : }
     962             : 
     963             : span.server {
     964             :         font-weight: bold;
     965             : }
     966             : 
     967             : .headers {
     968             :         margin: 4px 0;
     969             :         overflow-x: scroll;
     970             :         background-color: #ddd;
     971             : }
     972             : 
     973             : .data {
     974             :         margin: 4px 0;
     975             :         overflow-x: scroll;
     976             :         background-color: #a7ffeb;
     977             : }
     978             : p.editbutton {
     979             :         text-align: right;
     980             : }
     981             : p.editbutton > a {
     982             :         font-size: 0.8rem;
     983             : }
     984             : .editorclosed {
     985             :         display: none;
     986             : }
     987             : .CodeMirror, .CodeMirror-scroll {
     988             :         min-height: 200px;
     989             : }
     990             : a.selected:before {
     991             :   content: "< ";
     992             : }
     993             : a.selected:after {
     994             :   content: " >";
     995             : }
     996             : 
     997             : form input[type=submit] {
     998             :         outline:none;
     999             :         border:none;
    1000             :         text-transform: uppercase;
    1001             :         background-color: #607d8b;
    1002             :         padding: 6px 12px;
    1003             :         color: white;
    1004             : }
    1005             : 
    1006             : form input[type=text] {
    1007             :         width: 140px;
    1008             :         display: inline;
    1009             : }
    1010             : 
    1011             : form input {
    1012             :         display: block;
    1013             :         padding: 2px 0;
    1014             :         margin: 4px;
    1015             :         border: none;
    1016             :         border-bottom: 2px solid #bbb;
    1017             : }
    1018             : 
    1019             : form {
    1020             :         background-color: #e0f2f1;
    1021             :         padding: 4px;
    1022             :         margin: 4px;
    1023             : }
    1024             : )VirtualFile");
    1025             : 
    1026             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/index.html 
    1027             : static VirtualFile
    1028             : _html_index_html = VirtualFile::add("/html/index.html", R"VirtualFile(<!DOCTYPE html>
    1029             : <html><head>
    1030             :         <title>Index</title>
    1031             : </head>
    1032             : <body>
    1033             :         Index.html
    1034             : </body></html>)VirtualFile");
    1035             : 
    1036             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/components.pug 
    1037             : static VirtualFile
    1038             : _html_components_pug = VirtualFile::add("/html/components.pug", R"VirtualFile(mixin components
    1039             :         p.components
    1040             :                 if root
    1041             :                         span.component.root= "Root: " + root
    1042             :                 if dbName
    1043             :                         span.component.db= "Database: " + dbName
    1044             :                 if components
    1045             :                         each c in components
    1046             :                                 span.component
    1047             :                                         span.name=c.name
    1048             :                                         |
    1049             :                                         |
    1050             :                                         span.version=c.version
    1051             : )VirtualFile");
    1052             : 
    1053             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/docs.pug 
    1054             : static VirtualFile
    1055             : _html_docs_pug = VirtualFile::add("/html/docs.pug", R"VirtualFile(include virtual://html/header.pug
    1056             : 
    1057             : doctype html
    1058             : head
    1059             :         title Serenity Documentation
    1060             :         if virtual
    1061             :                 link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1062             :                 link(rel="stylesheet",href="/__server/virtual/css/md.css")
    1063             :         else
    1064             :                 link(rel="stylesheet",href="/css/style.css")
    1065             :                 link(rel="stylesheet",href="/css/md.css")
    1066             :         link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1067             :         link(rel="stylesheet",href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css")
    1068             :         link(rel="stylesheet",href="https://cdn.jsdelivr.net/highlight.js/latest/styles/github.min.css")
    1069             :         link(rel="stylesheet",href="https://use.fontawesome.com/releases/v5.0.13/css/all.css")
    1070             :         script(src="https://cdn.jsdelivr.net/highlight.js/latest/highlight.min.js")
    1071             :         script(src="https://cdn.jsdelivr.net/npm/highlightjs-line-numbers.js@2.6.0/dist/highlightjs-line-numbers.min.js")
    1072             :         script(src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js")
    1073             :         if virtual
    1074             :                 script(src="/__server/virtual/js/shell.js")
    1075             :         else
    1076             :                 script(src="/js/shell.js")
    1077             :         script.
    1078             :                 hljs.initHighlightingOnLoad();
    1079             :                 hljs.initLineNumbersOnLoad();
    1080             : 
    1081             : .body
    1082             :         +header("Docs")
    1083             :         .main
    1084             :                 .docs
    1085             :                         .contents
    1086             :                                 if breadcrumbs
    1087             :                                         each val, key in breadcrumbs
    1088             :                                                 p.breadcrumbs(style="margin-top: 0; margin-bottom: 0; margin-left: " + (1.0 + 1.0 * key) + "rem;")
    1089             :                                                         a.breadcrumbs(style="font-size: 1.0rem; font-weight: 400;",href=val.Url)=val.Title
    1090             :                                 if root
    1091             :                                         p: a(href=root) ↑ Move up
    1092             :                                 if contents
    1093             :                                         .source!= contents
    1094             :                                 if editable
    1095             :                                         form(method="POST",action=window.location.pathname+"?createArticle")
    1096             :                                                 input(name="name",type="text",placeholder="Name")
    1097             :                                                 input(name="title",type="text",placeholder="Title")
    1098             :                                                 input(type="submit",value="Create article")
    1099             :                                         form(method="POST",action=window.location.pathname+"?createCategory")
    1100             :                                                 input(name="name",type="text",placeholder="Name")
    1101             :                                                 input(name="title",type="text",placeholder="Title")
    1102             :                                                 input(type="submit",value="Create category")
    1103             :                                 if isSource
    1104             :                                         h1(style="margin-left: 0.5rem") Source code browser
    1105             :                                         if dir.back
    1106             :                                                 div
    1107             :                                                         a(href=dir.back)
    1108             :                                                                 span(class="fas fa-level-up-alt")
    1109             :                                                                 span= " .."
    1110             :                                         each val in dir.dirs
    1111             :                                                 div
    1112             :                                                         a(href=val.url)
    1113             :                                                                 span(class="fas fa-folder")
    1114             :                                                                 span= " " + val.name
    1115             :                                         each val in dir.files
    1116             :                                                 div
    1117             :                                                         a(href=val.url)
    1118             :                                                                 span(class="fas fa-file-alt")
    1119             :                                                                 span= " " + val.name
    1120             :                         .doc
    1121             :                                 if editable
    1122             :                                         .editblock(style="margin-top: -0.5rem;margin-bottom: -0.5rem")
    1123             :                                                 p.editbutton(style="margin: 0")
    1124             :                                                         a(href="#editblock",onclick="return ToggleEditor()") Edit ✎
    1125             :                                                         a.null(href="?delete")= (isCategory?"Delete category":"Delete article")
    1126             :                                                 #editblock.editorclosed
    1127             :                                                         textarea(id="editor",style="display:none;")= mdsource
    1128             :                                 if source
    1129             :                                         #sourceblock.source!= source
    1130             :                                 elseif isSource
    1131             :                                         #sourceblock.source
    1132             :                                                 h1= title
    1133             :                                                 if isDir
    1134             :                                                         if dir.back
    1135             :                                                                 div
    1136             :                                                                         a(href=dir.back)
    1137             :                                                                                 span(class="fas fa-level-up-alt")
    1138             :                                                                                 span= " .."
    1139             :                                                         each val in dir.dirs
    1140             :                                                                 div
    1141             :                                                                         a(href=val.url)
    1142             :                                                                                 span(class="fas fa-folder")
    1143             :                                                                                 span= " " + val.name
    1144             :                                                         each val in dir.files
    1145             :                                                                 div
    1146             :                                                                         a(href=val.url)
    1147             :                                                                                 span(class="fas fa-file-alt")
    1148             :                                                                                 span= " " + val.name
    1149             :                                                 else
    1150             :                                                         pre(class=sourceClass): code(class=sourceClass)= mdsource
    1151             : )VirtualFile");
    1152             : 
    1153             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/errors.pug 
    1154             : static VirtualFile
    1155             : _html_errors_pug = VirtualFile::add("/html/errors.pug", R"VirtualFile(include virtual://html/header.pug
    1156             : 
    1157             : mixin cursor(front=false)
    1158             :         p(id=front?"cursor":null)
    1159             :                 if cursor.prev
    1160             :                         - var prevUrl = window.location.pathname+"?c="+cursor.prev
    1161             :                         if selectedTag
    1162             :                                 - prevUrl = prevUrl + "&tag=" + selectedTag
    1163             :                         - prevUrl = prevUrl + "#cursor"
    1164             :                         a.nav(href=prevUrl) Prev
    1165             :                         |
    1166             :                         |
    1167             :                 span= cursor.start + " - " + cursor.end + " из " + cursor.total
    1168             :                 if cursor.next
    1169             :                         |
    1170             :                         |
    1171             :                         - var nextUrl = window.location.pathname+"?c="+cursor.next
    1172             :                         if selectedTag
    1173             :                                 - nextUrl = nextUrl + "&tag=" + selectedTag
    1174             :                         - nextUrl = nextUrl + "#cursor"
    1175             :                         a.nav(href=nextUrl) Next
    1176             : 
    1177             : mixin deleteLink(id)
    1178             :         - var link = "?delete="+id
    1179             :         if cursor.current
    1180             :                 - link = link + "&c="+cursor.current
    1181             :         if selectedTag
    1182             :                 - link = link + "&tag="+selectedTag
    1183             :         a.error(href=link) Remove
    1184             : 
    1185             : doctype html
    1186             : head
    1187             :         title Serenity Errors Page
    1188             :         link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1189             :         link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1190             :         script(src="/__server/virtual/js/shell.js")
    1191             : 
    1192             : .body
    1193             :         +header("Errors")
    1194             :         .main
    1195             :                 if tags
    1196             :                         p#tags
    1197             :                                 each val in tags
    1198             :                                         |
    1199             :                                         |
    1200             :                                         a(href="?tag="+val.tag,class=val.selected?"selected":null)= "#" + val.tag + " (" + val.count + ")"
    1201             : 
    1202             :                 +cursor(true)
    1203             : 
    1204             :                 each val in errors
    1205             :                         div.error_item
    1206             :                                 p.header
    1207             :                                         span.
    1208             :                                                 [#[span.time= "#" + val.__oid]] [#[span.time= serenity.timeToHttp(val.time)]] [#[span.ip= val.ip]] #[span.server= val.name] #[span.request= val.request]
    1209             :                                         |
    1210             :                                         |
    1211             :                                         +deleteLink(val.__oid)
    1212             :                                         |
    1213             :                                         |
    1214             :                                         if val.tags
    1215             :                                                 span &nbsp;&nbsp;
    1216             :                                                 each val in val.tags
    1217             :                                                         |
    1218             :                                                         |
    1219             :                                                         a(href="?tag="+val)= "#" + val
    1220             :                                 .headers
    1221             :                                         each value, key in val.headers
    1222             :                                                 p.code #[= key]: #[= value]
    1223             :                                 .data
    1224             :                                         pre: code.code= serenity.prettify(val.data)
    1225             :                 else
    1226             :                         p No errors found
    1227             : 
    1228             :                 +cursor
    1229             :                         )VirtualFile");
    1230             : 
    1231             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/errors_unauthorized.pug 
    1232             : static VirtualFile
    1233             : _html_errors_unauthorized_pug = VirtualFile::add("/html/errors_unauthorized.pug", R"VirtualFile(include virtual://html/header.pug
    1234             : 
    1235             : doctype html
    1236             : html
    1237             :         head
    1238             :                 title Serenity Errors Page
    1239             :                 link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1240             :                 link(rel="stylesheet",type="text/css",href="http://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1241             :                 script(src="/__server/virtual/js/shell.js")
    1242             :         body
    1243             :                 .body
    1244             :                         +header("Unauthorized")
    1245             : )VirtualFile");
    1246             : 
    1247             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/handlers.pug 
    1248             : static VirtualFile
    1249             : _html_handlers_pug = VirtualFile::add("/html/handlers.pug", R"VirtualFile(include virtual://html/components.pug
    1250             : include virtual://html/header.pug
    1251             : 
    1252             : doctype html
    1253             : head
    1254             :         title Serenity Handlers Page
    1255             :         link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1256             :         link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1257             :         script(src="/__server/virtual/js/shell.js")
    1258             : .body
    1259             :         +header("Handlers")
    1260             :         .main
    1261             :                 +components
    1262             :                 .handlers
    1263             :                         each value in handlers
    1264             :                                 p.components
    1265             :                                         span.handler_name= value.name
    1266             :                                         if value.forSubPaths
    1267             :                                                 span.version= " (with subpaths)"
    1268             :                                         span= " : "
    1269             :                                         if value.server
    1270             :                                                 span.component.rootserver
    1271             :                                                         span.name Server
    1272             :                                         else
    1273             :                                                 span.component
    1274             :                                                         span.name= value.component
    1275             :                                         if value.scheme
    1276             :                                                 span.component.scheme= "Scheme: " + value.scheme
    1277             :                                 if value.map
    1278             :                                         .map
    1279             :                                                 each m in value.map
    1280             :                                                         p.components
    1281             :                                                                 span.method= m.method + " "
    1282             :                                                                 span.pattern= m.pattern + " : "
    1283             :                                                                 span.version= m.name
    1284             :                                                         if m.query
    1285             :                                                                 h6.components Query fields
    1286             :                                                                 .map
    1287             :                                                                         each f in m.query
    1288             :                                                                                 p.components
    1289             :                                                                                         span.pattern= f.type + " "
    1290             :                                                                                         span.method= f.name
    1291             :                                                                                         if f.documentation
    1292             :                                                                                                 span.version= " - " + f.documentation
    1293             :                                                         if m.input
    1294             :                                                                 h6.components Input fields
    1295             :                                                                 .map
    1296             :                                                                         each f in m.input
    1297             :                                                                                 p.components
    1298             :                                                                                         span.pattern= f.type + " "
    1299             :                                                                                         span.method= f.name
    1300             :                                                                                         if f.documentation
    1301             :                                                                                                 span.version= " - " + f.documentation
    1302             : )VirtualFile");
    1303             : 
    1304             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/header.pug 
    1305             : static VirtualFile
    1306             : _html_header_pug = VirtualFile::add("/html/header.pug", R"VirtualFile(mixin header(name)
    1307             :         .title
    1308             :                 h1
    1309             :                         span.name= name
    1310             :                         span.id= ": Serenity " + version
    1311             :                 p.nav
    1312             :                         if hasDb && setup && auth
    1313             :                                 a(href="/__server") Server
    1314             :                                 |
    1315             :                                 |
    1316             :                                 a(href="/__server/handlers") Handlers
    1317             :                                 |
    1318             :                                 |
    1319             :                                 a(href="/__server/docs/index") Docs
    1320             :                                 |
    1321             :                                 |
    1322             :                                 a(href="/__server/errors") Errors
    1323             :                                 |
    1324             :                                 |
    1325             :                                 a(href="/__server/reports") Reports
    1326             :                         else if hasDb && !setup
    1327             :                                 span Waiting for setup
    1328             :                         else if !hasDb
    1329             :                                 span No db connection
    1330             :                 if setup
    1331             :                         p.nav
    1332             :                                 if auth
    1333             :                                         span.id= "#" + auth.id
    1334             :                                         span= " " + auth.name + " "
    1335             :                                         if auth.cancel
    1336             :                                                 a(href=auth.cancel) (Exit)
    1337             :                                 else
    1338             :                                         a(href=window.location.pathname+"?auth") Not authorized
    1339             : )VirtualFile");
    1340             : 
    1341             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/reports.pug 
    1342             : static VirtualFile
    1343             : _html_reports_pug = VirtualFile::add("/html/reports.pug", R"VirtualFile(include virtual://html/components.pug
    1344             : include virtual://html/header.pug
    1345             : 
    1346             : doctype html
    1347             : head
    1348             :         title Serenity Handlers Page
    1349             :         link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1350             :         link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1351             :         script(src="/__server/virtual/js/shell.js")
    1352             : 
    1353             : .body
    1354             :         +header("Reports")
    1355             :         .main
    1356             :                 +components
    1357             :                 .handlers
    1358             :                         if files
    1359             :                                 each value in files
    1360             :                                         p.components(id=value.name)
    1361             :                                                 span.time= "[" + value.date + "]"
    1362             :                                                 |
    1363             :                                                 |
    1364             :                                                 a(href="/__server/reports/" + value.name)
    1365             :                                                         span.handler_name= value.name
    1366             :                                                 |
    1367             :                                                 |
    1368             :                                                 a.null(href="/__server/reports/" + value.name + "?remove") Remove
    1369             :                         else if file
    1370             :                                 p.components
    1371             :                                 
    1372             :                                         a(href="/__server/reports#" + file.name) < Back
    1373             :                                         |
    1374             :                                         |
    1375             :                                         span.time= "[" + file.date + "]"
    1376             :                                         |
    1377             :                                         |
    1378             :                                         span.handler_name= file.name
    1379             :                                         |
    1380             :                                         |
    1381             :                                         a.null(href="/__server/reports/" + file.name + "?remove") Remove
    1382             :                                 .data
    1383             :                                         pre: code.code= file.data
    1384             : )VirtualFile");
    1385             : 
    1386             : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/server.pug 
    1387             : static VirtualFile
    1388             : _html_server_pug = VirtualFile::add("/html/server.pug", R"VirtualFile(include virtual://html/components.pug
    1389             : include virtual://html/header.pug
    1390             : 
    1391             : doctype html
    1392             : head
    1393             :         title Serenity Server Page
    1394             :         link(rel="stylesheet",href="/__server/virtual/css/style.css")
    1395             :         link(rel="stylesheet",href="/__server/virtual/css/kawaiJson.css")
    1396             :         link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
    1397             :         script(src="/__server/virtual/js/shell.js")
    1398             : body(onload="init(\"/shell\");")
    1399             :         .body
    1400             :                 +header("Server")
    1401             :                 .main
    1402             :                         if setup && auth
    1403             :                                 +components
    1404             :                                 div.console
    1405             :                                         #login
    1406             :                                                 button(onclick="return connect();") Run server console
    1407             :                                                 pre: code= resStat + memStat
    1408             :                                         #main(style="visibility:hidden")
    1409             :                                                 input#input(type="text",name="message",value="",size="80")
    1410             :                                                 button(onclick="return closeSocket();") Close
    1411             :                                                 br
    1412             :                                                 #output
    1413             :                                         input#fileSelector(type="file",style="visibility:hidden")
    1414             :                         else if !setup
    1415             :                                 form#setup(method="post")
    1416             :                                         input#name(type="text",name="name",placeholder="User name",value="")
    1417             :                                         input#passwd(type="password",name="passwd",placeholder="Password",value="")
    1418             :                                         input(type="submit",value="Setup")
    1419             : )VirtualFile");}

Generated by: LCOV version 1.14