aboutsummaryrefslogtreecommitdiff
path: root/dist/app.9232838b.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/app.9232838b.js')
-rw-r--r--dist/app.9232838b.js693
1 files changed, 693 insertions, 0 deletions
diff --git a/dist/app.9232838b.js b/dist/app.9232838b.js
new file mode 100644
index 0000000..5291d8a
--- /dev/null
+++ b/dist/app.9232838b.js
@@ -0,0 +1,693 @@
+// modules are defined as an array
+// [ module function, map of requires ]
+//
+// map of requires is short require name -> numeric require
+//
+// anything defined in a previous bundle is accessed via the
+// orig method which is the require for previous bundles
+
+(function(modules, entry, mainEntry, parcelRequireName, globalName) {
+ /* eslint-disable no-undef */
+ var globalObject =
+ typeof globalThis !== 'undefined'
+ ? globalThis
+ : typeof self !== 'undefined'
+ ? self
+ : typeof window !== 'undefined'
+ ? window
+ : typeof global !== 'undefined'
+ ? global
+ : {};
+ /* eslint-enable no-undef */
+
+ // Save the require from previous bundle to this closure if any
+ var previousRequire =
+ typeof globalObject[parcelRequireName] === 'function' &&
+ globalObject[parcelRequireName];
+
+ var cache = previousRequire.cache || {};
+ // Do not use `require` to prevent Webpack from trying to bundle this call
+ var nodeRequire =
+ typeof module !== 'undefined' &&
+ typeof module.require === 'function' &&
+ module.require.bind(module);
+
+ function newRequire(name, jumped) {
+ if (!cache[name]) {
+ if (!modules[name]) {
+ // if we cannot find the module within our internal map or
+ // cache jump to the current global require ie. the last bundle
+ // that was added to the page.
+ var currentRequire =
+ typeof globalObject[parcelRequireName] === 'function' &&
+ globalObject[parcelRequireName];
+ if (!jumped && currentRequire) {
+ return currentRequire(name, true);
+ }
+
+ // If there are other bundles on this page the require from the
+ // previous one is saved to 'previousRequire'. Repeat this as
+ // many times as there are bundles until the module is found or
+ // we exhaust the require chain.
+ if (previousRequire) {
+ return previousRequire(name, true);
+ }
+
+ // Try the node require function if it exists.
+ if (nodeRequire && typeof name === 'string') {
+ return nodeRequire(name);
+ }
+
+ var err = new Error("Cannot find module '" + name + "'");
+ err.code = 'MODULE_NOT_FOUND';
+ throw err;
+ }
+
+ localRequire.resolve = resolve;
+ localRequire.cache = {};
+
+ var module = (cache[name] = new newRequire.Module(name));
+
+ modules[name][0].call(
+ module.exports,
+ localRequire,
+ module,
+ module.exports,
+ this
+ );
+ }
+
+ return cache[name].exports;
+
+ function localRequire(x) {
+ return newRequire(localRequire.resolve(x));
+ }
+
+ function resolve(x) {
+ return modules[name][1][x] || x;
+ }
+ }
+
+ function Module(moduleName) {
+ this.id = moduleName;
+ this.bundle = newRequire;
+ this.exports = {};
+ }
+
+ newRequire.isParcelRequire = true;
+ newRequire.Module = Module;
+ newRequire.modules = modules;
+ newRequire.cache = cache;
+ newRequire.parent = previousRequire;
+ newRequire.register = function(id, exports) {
+ modules[id] = [
+ function(require, module) {
+ module.exports = exports;
+ },
+ {},
+ ];
+ };
+
+ Object.defineProperty(newRequire, 'root', {
+ get: function() {
+ return globalObject[parcelRequireName];
+ },
+ });
+
+ globalObject[parcelRequireName] = newRequire;
+
+ for (var i = 0; i < entry.length; i++) {
+ newRequire(entry[i]);
+ }
+
+ if (mainEntry) {
+ // Expose entry point to Node, AMD or browser globals
+ // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
+ var mainExports = newRequire(mainEntry);
+
+ // CommonJS
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
+ module.exports = mainExports;
+
+ // RequireJS
+ } else if (typeof define === 'function' && define.amd) {
+ define(function() {
+ return mainExports;
+ });
+
+ // <script>
+ } else if (globalName) {
+ this[globalName] = mainExports;
+ }
+ }
+})({"4KKVL":[function(require,module,exports) {
+var HMR_HOST = null;
+var HMR_PORT = 1234;
+var HMR_SECURE = false;
+var HMR_ENV_HASH = "d751713988987e9331980363e24189ce";
+module.bundle.HMR_BUNDLE_ID = "45f70d85e946827dd417192a9232838b";
+// @flow
+/*global HMR_HOST, HMR_PORT, HMR_ENV_HASH, HMR_SECURE*/
+/*::
+import type {
+HMRAsset,
+HMRMessage,
+} from '@parcel/reporter-dev-server/src/HMRServer.js';
+interface ParcelRequire {
+(string): mixed;
+cache: {|[string]: ParcelModule|};
+hotData: mixed;
+Module: any;
+parent: ?ParcelRequire;
+isParcelRequire: true;
+modules: {|[string]: [Function, {|[string]: string|}]|};
+HMR_BUNDLE_ID: string;
+root: ParcelRequire;
+}
+interface ParcelModule {
+hot: {|
+data: mixed,
+accept(cb: (Function) => void): void,
+dispose(cb: (mixed) => void): void,
+// accept(deps: Array<string> | string, cb: (Function) => void): void,
+// decline(): void,
+_acceptCallbacks: Array<(Function) => void>,
+_disposeCallbacks: Array<(mixed) => void>,
+|};
+}
+declare var module: {bundle: ParcelRequire, ...};
+declare var HMR_HOST: string;
+declare var HMR_PORT: string;
+declare var HMR_ENV_HASH: string;
+declare var HMR_SECURE: boolean;
+*/
+var OVERLAY_ID = '__parcel__error__overlay__';
+var OldModule = module.bundle.Module;
+function Module(moduleName) {
+ OldModule.call(this, moduleName);
+ this.hot = {
+ data: module.bundle.hotData,
+ _acceptCallbacks: [],
+ _disposeCallbacks: [],
+ accept: function (fn) {
+ this._acceptCallbacks.push(fn || (function () {}));
+ },
+ dispose: function (fn) {
+ this._disposeCallbacks.push(fn);
+ }
+ };
+ module.bundle.hotData = undefined;
+}
+module.bundle.Module = Module;
+var checkedAssets, /*: {|[string]: boolean|}*/
+acceptedAssets, /*: {|[string]: boolean|}*/
+/*: {|[string]: boolean|}*/
+assetsToAccept;
+function getHostname() {
+ return HMR_HOST || (location.protocol.indexOf('http') === 0 ? location.hostname : 'localhost');
+}
+function getPort() {
+ return HMR_PORT || location.port;
+}
+// eslint-disable-next-line no-redeclare
+var parent = module.bundle.parent;
+if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
+ var hostname = getHostname();
+ var port = getPort();
+ var protocol = HMR_SECURE || location.protocol == 'https:' && !(/localhost|127.0.0.1|0.0.0.0/).test(hostname) ? 'wss' : 'ws';
+ var ws = new WebSocket(protocol + '://' + hostname + (port ? ':' + port : '') + '/');
+ // $FlowFixMe
+ ws.onmessage = function (event) /*: {data: string, ...}*/
+ {
+ checkedAssets = {
+ /*: {|[string]: boolean|}*/
+ };
+ acceptedAssets = {
+ /*: {|[string]: boolean|}*/
+ };
+ assetsToAccept = [];
+ var data = /*: HMRMessage*/
+ JSON.parse(event.data);
+ if (data.type === 'update') {
+ // Remove error overlay if there is one
+ removeErrorOverlay();
+ let assets = data.assets.filter(asset => asset.envHash === HMR_ENV_HASH);
+ // Handle HMR Update
+ var handled = false;
+ assets.forEach(asset => {
+ var didAccept = asset.type === 'css' || asset.type === 'js' && hmrAcceptCheck(module.bundle.root, asset.id, asset.depsByBundle);
+ if (didAccept) {
+ handled = true;
+ }
+ });
+ if (handled) {
+ console.clear();
+ assets.forEach(function (asset) {
+ hmrApply(module.bundle.root, asset);
+ });
+ for (var i = 0; i < assetsToAccept.length; i++) {
+ var id = assetsToAccept[i][1];
+ if (!acceptedAssets[id]) {
+ hmrAcceptRun(assetsToAccept[i][0], id);
+ }
+ }
+ } else {
+ window.location.reload();
+ }
+ }
+ if (data.type === 'error') {
+ // Log parcel errors to console
+ for (let ansiDiagnostic of data.diagnostics.ansi) {
+ let stack = ansiDiagnostic.codeframe ? ansiDiagnostic.codeframe : ansiDiagnostic.stack;
+ console.error('🚨 [parcel]: ' + ansiDiagnostic.message + '\n' + stack + '\n\n' + ansiDiagnostic.hints.join('\n'));
+ }
+ // Render the fancy html overlay
+ removeErrorOverlay();
+ var overlay = createErrorOverlay(data.diagnostics.html);
+ // $FlowFixMe
+ document.body.appendChild(overlay);
+ }
+ };
+ ws.onerror = function (e) {
+ console.error(e.message);
+ };
+ ws.onclose = function (e) {
+ if (undefined !== 'test') {
+ console.warn('[parcel] 🚨 Connection to the HMR server was lost');
+ }
+ };
+}
+function removeErrorOverlay() {
+ var overlay = document.getElementById(OVERLAY_ID);
+ if (overlay) {
+ overlay.remove();
+ console.log('[parcel] ✨ Error resolved');
+ }
+}
+function createErrorOverlay(diagnostics) {
+ var overlay = document.createElement('div');
+ overlay.id = OVERLAY_ID;
+ let errorHTML = '<div style="background: black; opacity: 0.85; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; font-family: Menlo, Consolas, monospace; z-index: 9999;">';
+ for (let diagnostic of diagnostics) {
+ let stack = diagnostic.codeframe ? diagnostic.codeframe : diagnostic.stack;
+ errorHTML += `
+ <div>
+ <div style="font-size: 18px; font-weight: bold; margin-top: 20px;">
+ 🚨 ${diagnostic.message}
+ </div>
+ <pre>
+ ${stack}
+ </pre>
+ <div>
+ ${diagnostic.hints.map(hint => '<div>' + hint + '</div>').join('')}
+ </div>
+ </div>
+ `;
+ }
+ errorHTML += '</div>';
+ overlay.innerHTML = errorHTML;
+ return overlay;
+}
+function getParents(bundle, id) /*: Array<[ParcelRequire, string]>*/
+{
+ var modules = bundle.modules;
+ if (!modules) {
+ return [];
+ }
+ var parents = [];
+ var k, d, dep;
+ for (k in modules) {
+ for (d in modules[k][1]) {
+ dep = modules[k][1][d];
+ if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {
+ parents.push([bundle, k]);
+ }
+ }
+ }
+ if (bundle.parent) {
+ parents = parents.concat(getParents(bundle.parent, id));
+ }
+ return parents;
+}
+function updateLink(link) {
+ var newLink = link.cloneNode();
+ newLink.onload = function () {
+ if (link.parentNode !== null) {
+ // $FlowFixMe
+ link.parentNode.removeChild(link);
+ }
+ };
+ newLink.setAttribute('href', // $FlowFixMe
+ link.getAttribute('href').split('?')[0] + '?' + Date.now());
+ // $FlowFixMe
+ link.parentNode.insertBefore(newLink, link.nextSibling);
+}
+var cssTimeout = null;
+function reloadCSS() {
+ if (cssTimeout) {
+ return;
+ }
+ cssTimeout = setTimeout(function () {
+ var links = document.querySelectorAll('link[rel="stylesheet"]');
+ for (var i = 0; i < links.length; i++) {
+ // $FlowFixMe[incompatible-type]
+ var href = /*: string*/
+ links[i].getAttribute('href');
+ var hostname = getHostname();
+ var servedFromHMRServer = hostname === 'localhost' ? new RegExp('^(https?:\\/\\/(0.0.0.0|127.0.0.1)|localhost):' + getPort()).test(href) : href.indexOf(hostname + ':' + getPort());
+ var absolute = (/^https?:\/\//i).test(href) && href.indexOf(window.location.origin) !== 0 && !servedFromHMRServer;
+ if (!absolute) {
+ updateLink(links[i]);
+ }
+ }
+ cssTimeout = null;
+ }, 50);
+}
+function hmrApply(bundle, /*: ParcelRequire*/
+asset) /*: HMRAsset*/
+{
+ var modules = bundle.modules;
+ if (!modules) {
+ return;
+ }
+ if (asset.type === 'css') {
+ reloadCSS();
+ return;
+ }
+ let deps = asset.depsByBundle[bundle.HMR_BUNDLE_ID];
+ if (deps) {
+ var fn = new Function('require', 'module', 'exports', asset.output);
+ modules[asset.id] = [fn, deps];
+ } else if (bundle.parent) {
+ hmrApply(bundle.parent, asset);
+ }
+}
+function hmrAcceptCheck(bundle, /*: ParcelRequire*/
+id, /*: ParcelRequire*/
+/*: string*/
+depsByBundle) /*: ?{ [string]: { [string]: string } }*/
+{
+ var modules = bundle.modules;
+ if (!modules) {
+ return;
+ }
+ if (depsByBundle && !depsByBundle[bundle.HMR_BUNDLE_ID]) {
+ // If we reached the root bundle without finding where the asset should go,
+ // there's nothing to do. Mark as "accepted" so we don't reload the page.
+ if (!bundle.parent) {
+ return true;
+ }
+ return hmrAcceptCheck(bundle.parent, id, depsByBundle);
+ }
+ if (checkedAssets[id]) {
+ return;
+ }
+ checkedAssets[id] = true;
+ var cached = bundle.cache[id];
+ assetsToAccept.push([bundle, id]);
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
+ return true;
+ }
+ return getParents(module.bundle.root, id).some(function (v) {
+ return hmrAcceptCheck(v[0], v[1], null);
+ });
+}
+function hmrAcceptRun(bundle, /*: ParcelRequire*/
+id) /*: string*/
+{
+ var cached = bundle.cache[id];
+ bundle.hotData = {};
+ if (cached && cached.hot) {
+ cached.hot.data = bundle.hotData;
+ }
+ if (cached && cached.hot && cached.hot._disposeCallbacks.length) {
+ cached.hot._disposeCallbacks.forEach(function (cb) {
+ cb(bundle.hotData);
+ });
+ }
+ delete bundle.cache[id];
+ bundle(id);
+ cached = bundle.cache[id];
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
+ cached.hot._acceptCallbacks.forEach(function (cb) {
+ var assetsToAlsoAccept = cb(function () {
+ return getParents(module.bundle.root, id);
+ });
+ if (assetsToAlsoAccept && assetsToAccept.length) {
+ assetsToAccept.push.apply(assetsToAccept, assetsToAlsoAccept);
+ }
+ });
+ }
+ acceptedAssets[id] = true;
+}
+
+},{}],"6Q6as":[function(require,module,exports) {
+function request(method, source, data = null)
+{
+ return new Promise(function (resolve, reject){
+ let xhr = new XMLHttpRequest();
+ xhr.open(method, source, true);
+ xhr.setRequestHeader("Content-Type", "application/json");
+ xhr.send(data);
+
+ xhr.onload = function()
+ {
+ if(this.status >= 200 && this.status < 300){
+ resolve(xhr.response);
+ }
+ resolve({ status: this.status, statusText: xhr.statusText });
+ };
+ xhr.onerror = () =>
+ {
+ resolve({ status: this.status, statusText: xhr.statusText });
+ }
+ });
+}
+
+async function buildHeader(container, endpoint, title_text, about_text, repo_page = false)
+{
+ const info = JSON.parse(await request("GET", `http://localhost:1337/api/v1/${endpoint}`))["data"];
+
+ const row_div = document.createElement("div");
+ row_div.classList.add("row", "mx-0");
+
+ const col_div = document.createElement("div");
+ col_div.classList.add("col", "ms-4", "mt-2");
+ col_div.setAttribute("id", "header");
+
+ const title = document.createElement("a");
+ title.classList.add("fs-1");
+ title.setAttribute("id", "title");
+ title.setAttribute("href", "/");
+ title.appendChild(document.createTextNode(info[title_text]));
+
+ const about = document.createElement("p");
+ about.setAttribute("id", "about");
+ about.classList.add("mb-3", "fs-4")
+ about.appendChild(document.createTextNode(info[about_text]));
+
+ col_div.appendChild(title);
+ col_div.appendChild(about);
+
+ if(repo_page) {
+ buildBackSVG(col_div);
+ }
+
+ row_div.appendChild(col_div);
+
+ container.appendChild(row_div);
+}
+
+function buildProjectsHeader(container)
+{
+ const row_div = document.createElement("div");
+ row_div.classList.add("row", "mx-0", "mt-5");
+
+ // Title column
+ const title_col_div = document.createElement("div");
+ title_col_div.classList.add("col", "ms-4");
+ title_col_div.setAttribute("id", "projects-header");
+
+ const projects_title = document.createElement("p");
+ projects_title.classList.add("fs-1");
+ projects_title.appendChild(document.createTextNode("Projects"));
+
+ title_col_div.appendChild(projects_title);
+
+ // Search column
+ const search_col_div = document.createElement("div");
+ search_col_div.classList.add("col", "d-flex", "justify-content-end");
+ search_col_div.setAttribute("id", "projects-search");
+
+ const form = document.createElement("form");
+ const search = document.createElement("input");
+ search.setAttribute("type", "search");
+ search.setAttribute("name", "q");
+ const submit = document.createElement("input");
+ submit.setAttribute("type", "submit");
+ submit.setAttribute("value", "Search");
+
+ form.appendChild(search);
+ form.appendChild(submit);
+ search_col_div.appendChild(form);
+
+ row_div.appendChild(title_col_div);
+ row_div.appendChild(search_col_div);
+
+ container.appendChild(row_div);
+}
+
+async function buildProjects(container)
+{
+ const row_div = document.createElement("div");
+ row_div.classList.add("row", "mx-0");
+
+ const col_div = document.createElement("div");
+ col_div.classList.add("col", "ms-4");
+
+ const list = document.createElement("ul");
+ list.setAttribute("id", "repos");
+
+ const repos = JSON.parse(await request("GET", "http://localhost:1337/api/v1/repos"))["data"];
+
+ const params = new URLSearchParams(window.location.search);
+ const search = params.get("q");
+
+ for(const [key, value] of Object.entries(repos)) {
+ const li = document.createElement("li");
+ const repo_div = document.createElement("div");
+
+ const repo_title = document.createElement("p");
+ const link = document.createElement("a");
+ link.setAttribute("href", key);
+ link.appendChild(document.createTextNode(key));
+ repo_title.appendChild(link);
+ repo_title.classList.add("fs-3");
+
+ const repo_last_updated = document.createElement("span");
+ repo_last_updated.appendChild(document.createTextNode(`Last updated about ${value["last_updated"]} ago`));
+ repo_last_updated.classList.add("repo-last-updated", "fs-4");
+
+ const repo_desc = document.createElement("span");
+ repo_desc.appendChild(document.createTextNode(value["description"]));
+ repo_desc.classList.add("fs-4");
+
+ repo_div.appendChild(repo_title)
+ repo_div.appendChild(repo_last_updated)
+ repo_div.appendChild(repo_desc)
+
+ li.appendChild(repo_div);
+
+ if(search !== null) {
+ if(key.indexOf(search) != -1) {
+ list.appendChild(li);
+ }
+ }
+ else {
+ list.appendChild(li);
+ }
+ }
+
+ col_div.appendChild(list);
+ row_div.appendChild(col_div);
+ container.appendChild(row_div);
+}
+
+function buildRepoNavbar(container, repo, page)
+{
+ const row_div = document.createElement("div");
+ row_div.classList.add("row", "mx-0");
+
+ const col_div = document.createElement("div");
+ col_div.classList.add("col", "ms-3");
+ col_div.setAttribute("id", "repo-navbar");
+
+ const nav = document.createElement("nav");
+ nav.classList.add("navbar", "navbar-expand", "navbar-dark");
+
+ const nav_container = document.createElement("div");
+ nav_container.classList.add("container-fluid", "px-0");
+
+ const nav_collapse = document.createElement("div");
+ nav_collapse.classList.add("collapse", "navbar-collapse");
+
+ const nav_nav = document.createElement("ul");
+ nav_nav.classList.add("navbar-nav");
+
+ const nav_items = ["log", "refs", "tree"];
+
+ nav_items.forEach(item =>
+ {
+ const item_li = document.createElement("li");
+ item_li.classList.add("nav-item");
+
+ const item_link = document.createElement("a");
+ item_link.classList.add("nav-link", "fs-3");
+ if(item === page) {
+ item_link.classList.add("active");
+ item_link.setAttribute("aria-current", "page");
+ }
+ item_link.setAttribute("href", `/${repo}/${item}`);
+ item_link.appendChild(document.createTextNode(item));
+
+ item_li.appendChild(item_link);
+
+ nav_nav.appendChild(item_li);
+ });
+
+ nav_collapse.appendChild(nav_nav);
+ nav_container.appendChild(nav_collapse);
+ nav.appendChild(nav_container);
+ col_div.appendChild(nav);
+ row_div.appendChild(col_div);
+ container.appendChild(row_div);
+}
+
+function buildBackSVG(container)
+{
+ const xmlns = "http://www.w3.org/2000/svg";
+
+ let svg = document.createElementNS(xmlns, "svg");
+
+ svg.setAttributeNS(null, "height", "24px");
+ svg.setAttributeNS(null, "width", "24px");
+ svg.setAttributeNS(null, "viewBox", "0 0 24 24");
+ svg.setAttributeNS(null, "fill", "#FFFFFF");
+
+ const path_one = document.createElementNS(xmlns, "path");
+ path_one.setAttributeNS(null, "d", "M0 0h24v24H0z");
+ path_one.setAttributeNS(null, "fill", "none");
+
+ const path_two = document.createElementNS(xmlns, "path");
+ path_two.setAttributeNS(null, "d", "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z");
+
+ svg.appendChild(path_one);
+ svg.appendChild(path_two);
+ container.appendChild(svg);
+}
+
+document.addEventListener("DOMContentLoaded", async function ()
+{
+ let path = window.location.pathname;
+
+ if(path === "/") {
+ const container = document.getElementById("container");
+ await buildHeader(container, "info", "title", "about");
+ buildProjectsHeader(container);
+ buildProjects(container);
+ }
+
+ const path_valid_and_split = /\/([a-zA-Z0-9\.\-_]+)\/([a-z]+)$/;
+ if(path_valid_and_split.test(path)) {
+ path = path_valid_and_split.exec(path);
+ const repo = path[1];
+ const page = path[2];
+
+ const container = document.getElementById("container");
+
+ await buildHeader(container, `repos/${repo}`, "name", "description", true);
+ buildRepoNavbar(container, repo, page);
+ }
+});
+},{}]},["4KKVL","6Q6as"], "6Q6as", "parcelRequire0364")
+