tiddlywiki-plugin-dev
Version:
[](https://github.com/tiddly-gittly)
77 lines (76 loc) • 2.61 kB
JavaScript
var __getOwnPropNames = Object.getOwnPropertyNames;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var require_devweb_listener = __commonJS({
"src/devweb-listener.js"(exports) {
(function() {
const moduleExports = exports;
moduleExports.name = "devweb-listner";
moduleExports.platforms = ["browser"];
moduleExports.after = ["load-modules"];
moduleExports.synchronous = true;
moduleExports.startup = function() {
const WS = typeof globalThis !== "undefined" && globalThis.WebSocket || // eslint-disable-next-line no-undef
(typeof window !== "undefined" ? window.WebSocket : void 0);
if (!WS) {
console.error(
"[Modern.TiddlyDev]",
"Unsupported browser, need WebSocket support"
);
return;
}
const generation = 0;
const protocol = document.location.protocol === "https:" ? "wss" : "ws";
const url = protocol + "://" + document.location.host + "/__dev_ws?gen=" + generation;
let reconnectDelay = 1e3;
const maxReconnectDelay = 1e4;
let disposed = false;
function connect() {
if (disposed)
return;
const socket = new WS(url);
socket.onopen = function() {
reconnectDelay = 1e3;
console.debug(
"[Modern.TiddlyDev]",
"Dev WebSocket connected - auto-refresh enabled."
);
};
socket.onmessage = function(event) {
switch (event.data) {
case "bye": {
socket.close();
break;
}
case "refresh": {
disposed = true;
socket.close();
document.location.reload();
break;
}
default:
break;
}
};
socket.onclose = function() {
if (disposed)
return;
console.warn(
"[Modern.TiddlyDev]",
"Dev WebSocket closed - reconnecting in " + Math.round(reconnectDelay / 1e3) + "s..."
);
setTimeout(function() {
reconnectDelay = Math.min(reconnectDelay * 1.5, maxReconnectDelay);
connect();
}, reconnectDelay);
};
socket.onerror = function() {
};
}
connect();
};
})();
}
});
export default require_devweb_listener();