mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-26 18:58:58 +02:00
250 lines
7.0 KiB
JavaScript
250 lines
7.0 KiB
JavaScript
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
try {
|
|
var info = gen[key](arg);
|
|
var value = info.value;
|
|
} catch (error) {
|
|
reject(error);
|
|
return;
|
|
}
|
|
if (info.done) {
|
|
resolve(value);
|
|
} else {
|
|
Promise.resolve(value).then(_next, _throw);
|
|
}
|
|
}
|
|
function _async_to_generator(fn) {
|
|
return function () {
|
|
var self = this,
|
|
args = arguments;
|
|
return new Promise(function (resolve, reject) {
|
|
var gen = fn.apply(self, args);
|
|
function _next(value) {
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
}
|
|
function _throw(err) {
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
}
|
|
_next(undefined);
|
|
});
|
|
};
|
|
}
|
|
function _ts_generator(thisArg, body) {
|
|
var f,
|
|
y,
|
|
t,
|
|
_ = {
|
|
label: 0,
|
|
sent: function () {
|
|
if (t[0] & 1) throw t[1];
|
|
return t[1];
|
|
},
|
|
trys: [],
|
|
ops: [],
|
|
},
|
|
g = Object.create(
|
|
(typeof Iterator === "function" ? Iterator : Object).prototype,
|
|
),
|
|
d = Object.defineProperty;
|
|
return (
|
|
d(g, "next", { value: verb(0) }),
|
|
d(g, "throw", { value: verb(1) }),
|
|
d(g, "return", { value: verb(2) }),
|
|
typeof Symbol === "function" &&
|
|
d(g, Symbol.iterator, {
|
|
value: function () {
|
|
return this;
|
|
},
|
|
}),
|
|
g
|
|
);
|
|
function verb(n) {
|
|
return function (v) {
|
|
return step([n, v]);
|
|
};
|
|
}
|
|
function step(op) {
|
|
if (f) throw new TypeError("Generator is already executing.");
|
|
while ((g && ((g = 0), op[0] && (_ = 0)), _))
|
|
try {
|
|
if (
|
|
((f = 1),
|
|
y &&
|
|
(t =
|
|
op[0] & 2
|
|
? y["return"]
|
|
: op[0]
|
|
? y["throw"] || ((t = y["return"]) && t.call(y), 0)
|
|
: y.next) &&
|
|
!(t = t.call(y, op[1])).done)
|
|
)
|
|
return t;
|
|
if (((y = 0), t)) op = [op[0] & 2, t.value];
|
|
switch (op[0]) {
|
|
case 0:
|
|
case 1:
|
|
t = op;
|
|
break;
|
|
case 4:
|
|
_.label++;
|
|
return { value: op[1], done: false };
|
|
case 5:
|
|
_.label++;
|
|
y = op[1];
|
|
op = [0];
|
|
continue;
|
|
case 7:
|
|
op = _.ops.pop();
|
|
_.trys.pop();
|
|
continue;
|
|
default:
|
|
if (
|
|
!((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&
|
|
(op[0] === 6 || op[0] === 2)
|
|
) {
|
|
_ = 0;
|
|
continue;
|
|
}
|
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
|
_.label = op[1];
|
|
break;
|
|
}
|
|
if (op[0] === 6 && _.label < t[1]) {
|
|
_.label = t[1];
|
|
t = op;
|
|
break;
|
|
}
|
|
if (t && _.label < t[2]) {
|
|
_.label = t[2];
|
|
_.ops.push(op);
|
|
break;
|
|
}
|
|
if (t[2]) _.ops.pop();
|
|
_.trys.pop();
|
|
continue;
|
|
}
|
|
op = body.call(thisArg, _);
|
|
} catch (e) {
|
|
op = [6, e];
|
|
y = 0;
|
|
} finally {
|
|
f = t = 0;
|
|
}
|
|
if (op[0] & 5) throw op[1];
|
|
return { value: op[0] ? op[1] : void 0, done: true };
|
|
}
|
|
}
|
|
var ready = false;
|
|
window.onload = function () {
|
|
return _async_to_generator(function () {
|
|
var consoleEl, loadingDotsEl, eventSource;
|
|
function formatTimestamp(timestamp) {
|
|
var date = new Date(timestamp);
|
|
return date.toLocaleTimeString("en-US", {
|
|
hour12: false,
|
|
hour: "2-digit",
|
|
minute: "2-digit",
|
|
second: "2-digit",
|
|
fractionalSecondDigits: 3,
|
|
});
|
|
}
|
|
function addConsoleLine(type, message, timestamp, level) {
|
|
var validLevels = ["debug", "info", "warn", "error"];
|
|
var lvl = validLevels.includes(level)
|
|
? level
|
|
: type === "error"
|
|
? "error"
|
|
: "info";
|
|
var line = document.createElement("div");
|
|
line.className = "console-line ".concat(type, " level-").concat(lvl);
|
|
var timestampEl = document.createElement("span");
|
|
timestampEl.className = "console-timestamp";
|
|
timestampEl.textContent = formatTimestamp(timestamp);
|
|
var messageEl = document.createElement("span");
|
|
messageEl.className = "console-message";
|
|
messageEl.textContent = message;
|
|
line.appendChild(timestampEl);
|
|
line.appendChild(messageEl);
|
|
consoleEl.appendChild(line);
|
|
consoleEl.scrollTop = consoleEl.scrollHeight;
|
|
}
|
|
return _ts_generator(this, function (_state) {
|
|
consoleEl = document.getElementById("console");
|
|
loadingDotsEl = document.getElementById("loading-dots");
|
|
if (!consoleEl || !loadingDotsEl) {
|
|
console.error("Required DOM elements not found");
|
|
return [2];
|
|
}
|
|
if (typeof wakeEventsPath === "undefined" || !wakeEventsPath) {
|
|
addConsoleLine(
|
|
"error",
|
|
"Configuration error: wakeEventsPath not defined",
|
|
new Date().toISOString(),
|
|
);
|
|
loadingDotsEl.style.display = "none";
|
|
return [2];
|
|
}
|
|
if (typeof EventSource === "undefined") {
|
|
addConsoleLine(
|
|
"error",
|
|
"Browser does not support Server-Sent Events",
|
|
new Date().toISOString(),
|
|
);
|
|
loadingDotsEl.style.display = "none";
|
|
return [2];
|
|
}
|
|
eventSource = new EventSource(wakeEventsPath);
|
|
eventSource.onmessage = function (event) {
|
|
var evt;
|
|
try {
|
|
evt = JSON.parse(event.data);
|
|
} catch (unused) {
|
|
addConsoleLine(
|
|
"error",
|
|
"Invalid event data: ".concat(event.data),
|
|
new Date().toISOString(),
|
|
);
|
|
return;
|
|
}
|
|
var payload = evt.data || {};
|
|
var type = evt.action;
|
|
var timestamp = evt.timestamp;
|
|
if (type === "ready") {
|
|
ready = true;
|
|
loadingDotsEl.style.display = "none";
|
|
addConsoleLine(
|
|
type,
|
|
"Container is ready, refreshing...",
|
|
timestamp,
|
|
evt.level,
|
|
);
|
|
setTimeout(function () {
|
|
window.location.reload();
|
|
}, 200);
|
|
} else if (type === "error" || evt.level === "error") {
|
|
var errorMessage =
|
|
payload.error || payload.message || "Unknown error";
|
|
addConsoleLine(type, errorMessage, timestamp, evt.level);
|
|
loadingDotsEl.style.display = "none";
|
|
eventSource.close();
|
|
} else {
|
|
var message = payload.message || "";
|
|
addConsoleLine(type, message, timestamp, evt.level);
|
|
}
|
|
};
|
|
eventSource.onerror = function () {
|
|
if (ready) {
|
|
return;
|
|
}
|
|
addConsoleLine(
|
|
"error",
|
|
"Connection lost. Please refresh the page.",
|
|
new Date().toISOString(),
|
|
);
|
|
loadingDotsEl.style.display = "none";
|
|
eventSource.close();
|
|
};
|
|
return [2];
|
|
});
|
|
})();
|
|
};
|