UNPKG

htmlgaga

Version:

Manage non-SPA pages with webpack and React.js

84 lines (70 loc) 3.47 kB
"use strict"; function _interopDefault(ex) { return ex && "object" == typeof ex && "default" in ex ? ex.default : ex; } var MessageType = require("../../dist/MessageType-08992331.cjs.prod.js"), stripAnsi = _interopDefault(require("strip-ansi")), htmlEntities = require("html-entities"); function calculateDelayMs() { var delay = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 200, retries = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return delay * Math.pow(2, retries); } var entities = new htmlEntities.AllHtmlEntities, overlay = document.createElement("div"), overlayStyles = { position: "fixed", top: "0", right: "0", bottom: "0", left: "0", background: "white", zIndex: 999999, fontSize: "18px", whiteSpace: "pre", paddingLeft: "20px", paddingRight: "20px", overflow: "auto", lineHeight: 1.5 }; function htmlElement(txt) { var tag = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "div", styles = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, element = document.createElement(tag); return element.innerHTML = txt, Object.keys(styles).forEach((function(key) { element.style[key] = styles[key]; })), element; } function report(errors) { var _document$body, _errors$ = errors[0], moduleName = _errors$.moduleName, message = _errors$.message; overlay.appendChild(htmlElement("ERROR in ".concat(moduleName), "h1", { color: "red" })), overlay.appendChild(htmlElement(entities.encode(stripAnsi(message)), "pre")), null === (_document$body = document.body) || void 0 === _document$body || _document$body.appendChild(overlay); } Object.keys(overlayStyles).forEach((function(key) { overlay.style[key] = overlayStyles[key]; })); var prefix = "[htmlgaga]", socketUrl = "ws://".concat(__WEBSOCKET__), maxRetries = 10, retries = 0, delay = 200, linkOpening = !1; function createWebSocketClient(socketUrl) { var client = new WebSocket(socketUrl); return client.onopen = function() { if (retries > 0) return window.location.reload(); console.log("".concat(prefix, " Socket connected on ").concat(socketUrl)); }, client.onmessage = function(event) { var _JSON$parse = JSON.parse(null == event ? void 0 : event.data), type = _JSON$parse.type, data = _JSON$parse.data; switch (!0) { case type === MessageType.MessageType.HASH: return void console.log("".concat(prefix, " Built in ").concat(data.endTime - data.startTime, "ms")); case type === MessageType.MessageType.RELOAD: if (linkOpening) return; return void window.location.reload(); case type === MessageType.MessageType.INVALID: return void console.log("".concat(prefix, " Rebuilding...")); case type === MessageType.MessageType.ERRORS: return void report(data); } }, client.onclose = function(event) { console.log("".concat(prefix, " Disconnected"), event), retries < maxRetries ? (retries += 1, client = null, setTimeout((function() { createWebSocketClient(socketUrl); }), Math.random() * calculateDelayMs(delay, retries))) : console.log("".concat(prefix, " Please make sure the server is on and refresh the page.")); }, client; } document.addEventListener("click", (function(e) { var _e$target; "a" === (null === (_e$target = e.target) || void 0 === _e$target ? void 0 : _e$target.tagName.toLowerCase()) && (linkOpening = !0); })), createWebSocketClient(socketUrl);