UNPKG

godprotocol

Version:

A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.

126 lines (104 loc) 3.69 kB
import create from "./create.js"; import run from "./run.js"; import load from "./load.js"; import parse from "./parse.js"; let routes = ["create_account", "load", "run", "parse"]; const forms = (route, manager) => { let pair = { create_account: create, load, run, parse, }; let rt = pair[route]; if (rt) return rt(manager); return ""; }; const header_script = (manager) => { let domain = manager.options.server_domain; if (domain.startsWith("127")) domain = `http://${domain}`; else domain = `https://${domain}`; return ` let ftch = async(path, body)=>{ try{ let fch = await fetch("${domain}".concat(path), { method: 'POST', header: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify(body) }) let response = await fch.json() return response; }catch(e){ console.log(e) return {message: e.message} } }`; }; const header = (route) => { let tml = `<nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm"> <div class="container"> <a class="navbar-brand fw-bold" href="/">GODPROTOCOL</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse justify-content-center" id="navbarNav"> <ul class="navbar-nav" id="nav-list"> `; routes.map((r) => { tml = `${tml}<li class='nav-item'><a href='/${r}' class="nav-link text-capitalize ${ route === r ? "active text-danger fw-bold" : "" }">${r.replace(/_/g, " ")}</a></li>`; }); tml = `${tml}</ul> </div> </div> </nav>`; return tml; }; const footer = (route) => { let yr = new Date().getFullYear(); let tml = `<footer class="mt-auto py-3 bg-light text-center"> <div class="container"> <p class="mb-1"> Made with <i class="bi bi-heart-fill text-danger"></i> by <a target="_blank" href="https://github.com/immanuel-savvy">Savvy</a>. </p> <small> Airditor beta version 0.0.1 — Released under the <a target="_blank" href="https://opensource.org/licenses/MIT">MIT License</a>. &copy <span id="year">${2025 - yr !== 0 ? `${2025} - ${yr}` : yr}</span> </small> </div> </footer>`; return tml; }; const set_page = (route, manager) => { let title = `GODPROTOCOL`; let init_acc = manager.options.init_account; if (init_acc) { title = `${init_acc.name} - ${title}`; } let tml = ` <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GodProtocol</title> <!-- Bootstrap 5 CDN --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css"> </head> <body class="d-flex flex-column min-vh-100"><div class="container text-center my-5"><h1 id='page-title' class='mb-4'>${title}</h1>`; tml = `${tml}${header(route)}`; tml = `${tml}<script>${header_script(manager)}</script>`; if (route !== "") { tml = `${tml}${forms(route, manager)}`; } tml = `${tml}${footer(route)}`; tml = `${tml}<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script></div></body> </html> `; return tml; }; export { set_page };