"use strict"; /***************************************************************************************/ /***************************************************************************************/ //THIS SCRIPT IS USED FOR EXPERIMENTING. //IT SERVES NO FUNCTIONALITY IN THE WEB APPLICATION. //IT'S USED MAINLY FOR TESTING PURPOSES. /***************************************************************************************/ /***************************************************************************************/ //EXPERIMENT 1 /***************************************************************************************/ /*** TRYING TO FIDGURE OUT IF IT'S POSSIBLE TO MAKE THUMBNAIL IMAGES OF WEB WINDOWS ****/ /***************************************************************************************/ /* import { html2canvas } from 'html2canvas' function screenshot1() { const screenshotTarget = document.body; html2canvas(screenshotTarget).then((canvas) => { const base64image = canvas.toDataURL("image/png"); window.location.href = base64image; }); } */ /*******************************************************************************************/ /*** END TRYING TO FIDGURE OUT IF IT'S POSSIBLE TO MAKE THUMBNAIL IMAGES OF WEB WINDOWS ****/ /*******************************************************************************************/ //EXPERIMENT 2 /*********************************************************************/ /*** FETCH ALL JAVASCRIPT FILES, APPEND THEM, AND DISPLAY AS TEXT ****/ /*********************************************************************/ async function start_code_analysis() { var all_js = null; var js_lines_array = []; var function_names_array = []; var js_textarea = null; var textarea_js = null; var i = null; all_js = await get_all_js(); js_lines_array = await split_all_javascript_text(all_js); make_source_textarea(); js_textarea = get_source_textarea(); if (js_textarea !== null) { ////js_textarea.innerText = "mmoo0oo0!"; clear_textarea_text("all_javascript_textarea"); ////alert(js_lines_array.toString()); function_names_array = get_js_function_names(js_lines_array); //textarea_js = encodeURI(function_names_array).join("%0D%0A"); ////alert(Array.isArray(js_lines_array)); for (i = 0; i < function_names_array.length; i++) { textarea_js = function_names_array[i]; textarea_js = encodeURI(textarea_js) + "%0D%0A"; textarea_js = decodeURI(textarea_js); console.log(textarea_js); append_textarea_text("all_javascript_textarea", textarea_js); } } } async function get_all_js() { var js_objects = null; var js_obj = null; var js_objects_length = null; var i = null; var js_path = null; var script_content = null; var text_storage = null; var all_js = null; var js_lines_array = []; all_js = ""; js_objects = document.getElementsByName("native_javascript"); //GET ARRAY OF JAVASCRIPT OBJECTS IN THE PAGE /*text_storage = document.createElement("textarea"); //CREATE A TEXTAREA ELEMENT TO STORE RAW JAVASCRIPT TEXT text_storage.setAttribute("id", "all_javascript_textarea"); text_storage.style.position = "absolute"; text_storage.style.top = "0"; text_storage.style.left = "0"; text_storage.style.width = "calc(100% - 7px)"; text_storage.style.height = "calc(100% - 7px)"; text_storage.style.fontFamily = "Monospace"; text_storage.style.fontSize = "11pt";*/ ////text_storage.style.display = "none"; if (js_objects !== null) { js_objects_length = js_objects.length; //CHECK IF WE HAVE MORE THAN 0 SCRIPT OBJECTS for (i = 0; i < js_objects_length; i++) { js_obj = js_objects[i]; //GET INDIVIDUAL JAVASCRIPT OBJECT if (js_obj !== null) { js_path = js_obj.getAttribute("src"); //GET THE URL OF THE JAVASCRIPT FILE ON THE SERVER script_content = await fetch_javascripts_0001(js_path); //FETCH JAVASCRIPT DATA ////text_storage.value = text_storage.value + script_content; //APPEND JAVASCRIPT DATA INTO THE TEXTAREA INPUT all_js = all_js + script_content; } } } //document.body.innerText = text_storage.value.replace(/[\r\n]/gm, ''); //ESCAPE LINE BREAKS ///document.body.innerText = text_storage.value; //ESCAPE LINE BREAKS /*if (document.getElementById("all_javascript_textarea") !== null) { } else { //document.body.appendChild(text_storage); }*/ //js_lines_array = split_all_javascript_text(all_js); //get_js_function_names(js_lines_array); //make_stats_textarea(); //clear_textarea_text("javascript_stats_textarea"); //function_names_array = get_js_function_names(js_lines_array); //function_names = function_names_array.toString(); //append_textarea_text("javascript_stats_textarea", function_names); ////place_function_names_text(js_lines_array); return all_js; } //FUNCTION TO FETCH A JAVASCRIPT FILE'S CONTENT async function fetch_javascripts_0001(url) { let d = await fetch(url, { method: "GET", headers: { "Content-Type": "text/plain;charset=UTF-8" } }); let t = await d.text(); return t; } /*********************************************************************/ /*** END FETCH ALL JAVASCRIPT ****************************************/ /*********************************************************************/ //splits all the javascript into an array of lines async function split_all_javascript_text(js_text = "") { var js_txt = null; var js_lines_array = []; js_txt = await js_text; if (typeof js_txt === "string") { if (js_txt.length >= 0) { if (encodeURI(js_txt).indexOf("%0D%0A") > -1.0) { js_lines_array = encodeURI(js_txt).split("%0D%0A"); } else { js_lines_array.push(js_text); } } } return js_lines_array; } /* function place_function_names_text(all_js_lines_array = []) { var js_lines_array = []; var function_names_array = []; var function_names = null; js_lines_array = all_js_lines_array; if (Array.isArray(js_lines_array) === true) { make_stats_textarea(); clear_textarea_text("javascript_stats_textarea"); function_names_array = get_js_function_names(js_lines_array); function_names = function_names_array.toString(); append_textarea_text("javascript_stats_textarea", function_names); } else { } //js_lines_array = analyze_all_javascript(all_js); //make_stats_textarea(); //clear_textarea_text("javascript_stats_textarea"); //function_names_array = get_js_function_names(js_lines_array); //function_names = function_names_array.toString(); //append_textarea_text("javascript_stats_textarea", function_names); } */ //2024-11-22: //gets every function name and writes it to the console. //if the function is anonymous, then 'anonymous function' //is written to the console log. currently, there are 1412 //functions in total, out of 38000 lines of javascript //with each function having an average of 29 lines of code. function get_js_function_names(js_lines_array = []) { var line_array = []; var i = null; var array_length = null; var line_string = null; var function_count = null; var function_names = []; function_count = 0; line_array = js_lines_array; if (Array.isArray(line_array) === true) { if (line_array.length >= 0) { array_length = line_array.length; for (i = 0; i < array_length; i++) { if (typeof line_array[i] === "string") { if (line_array[i].length >= 0) { line_string = line_array[i]; if (line_string.indexOf("function") > -1.0 && line_string.substring(0, 8) === "function") { if (line_string.indexOf("(") > -1.0) { function_count++; function_names.push(decodeURI(line_string).substring(9, decodeURI(line_string).indexOf("("))); ////console.log(decodeURI(line_string).substring(9, decodeURI(line_string).indexOf("("))); } } else { if (line_string.indexOf("function%20(") > -1.0) { ////console.log("anonymous function"); ////function_names.push("anonymous function"); ////function_count++; } } } } } } } ////console.log("number of functions in total: " + function_count); ////return function_count; return function_names; } function clear_textarea_text(textarea_id = null) { var text_area = null; text_area = document.getElementById(textarea_id); if (text_area !== null) { ////text_area.value = ""; text_area.innerHTML = ""; } } function append_textarea_text(textarea_id = null, js_text = "") { var text_area = null; text_area = document.getElementById(textarea_id); if (text_area !== null) { ////text_area.value = text_area.value + js_text; text_area.innerHTML = text_area.innerHTML + js_text; } } /* function make_stats_textarea() { var text_area = null; text_area = document.getElementById("javascript_stats_textarea"); if (text_area !== null) { } else { text_area = document.createElement("textarea"); //CREATE A TEXTAREA ELEMENT TO STORE RAW JAVASCRIPT TEXT text_area.setAttribute("id", "javascript_stats_textarea"); text_area.style.position = "absolute"; text_area.style.top = "0"; text_area.style.left = "0"; text_area.style.width = "calc(100% - 7px)"; ////(parseFloat(window.innerWidth) - 20) + "px"; text_area.style.height = "calc(100% - 7px)"; ////(parseFloat(window.innerHeight) - 20) + "px"; text_area.style.fontFamily = "Monospace"; text_area.style.fontSize = "11pt"; text_area.style.display = "block"; document.body.appendChild(text_area); } } */ function get_source_textarea() { var source_textarea = null; source_textarea = document.getElementById("all_javascript_textarea"); if (source_textarea !== null) { } else { source_textarea = make_source_textarea(); } return source_textarea; } function make_source_textarea() { var source_textarea = null; var text_storage = null; source_textarea = document.getElementById("all_javascript_textarea"); if (source_textarea !== null) { text_storage = source_textarea; } else { text_storage = document.createElement("textarea"); //CREATE A TEXTAREA ELEMENT TO STORE RAW JAVASCRIPT TEXT text_storage.setAttribute("id", "all_javascript_textarea"); text_storage.style.position = "absolute"; text_storage.style.top = "0"; text_storage.style.left = "0"; text_storage.style.width = "calc(100% - 7px)"; text_storage.style.height = "calc(100% - 7px)"; text_storage.style.fontFamily = "Monospace"; text_storage.style.fontSize = "11pt"; document.body.appendChild(text_storage); } return text_storage; }