Cleanup app.js
This commit is contained in:
parent
6c7844531b
commit
40db08fa3d
|
@ -1,5 +1,3 @@
|
||||||
import { AbstractMessageReader } from "vscode-jsonrpc/lib/messageReader.js";
|
|
||||||
import { AbstractMessageWriter } from "vscode-jsonrpc/lib/messageWriter.js";
|
|
||||||
import { Terminal } from "xterm";
|
import { Terminal } from "xterm";
|
||||||
import { FitAddon } from "xterm-addon-fit";
|
import { FitAddon } from "xterm-addon-fit";
|
||||||
|
|
||||||
|
@ -8,11 +6,6 @@ import "xterm/css/xterm.css";
|
||||||
const DEBUG = window.location.hash === "#debug";
|
const DEBUG = window.location.hash === "#debug";
|
||||||
const config = window.rijuConfig;
|
const config = window.rijuConfig;
|
||||||
|
|
||||||
const formatButton = document.getElementById("formatButton");
|
|
||||||
const lspButton = document.getElementById("lspButton");
|
|
||||||
const lspButtonState = document.getElementById("lspButtonState");
|
|
||||||
const connectionStatus = document.getElementById("connectionStatus");
|
|
||||||
|
|
||||||
function closeModal() {
|
function closeModal() {
|
||||||
document.querySelector("html").classList.remove("is-clipped");
|
document.querySelector("html").classList.remove("is-clipped");
|
||||||
document.getElementById("modal").classList.remove("is-active");
|
document.getElementById("modal").classList.remove("is-active");
|
||||||
|
@ -26,85 +19,6 @@ function showError({ message, data }) {
|
||||||
document.querySelector("html").classList.add("is-clipped");
|
document.querySelector("html").classList.add("is-clipped");
|
||||||
}
|
}
|
||||||
|
|
||||||
class RijuMessageReader extends AbstractMessageReader {
|
|
||||||
constructor(socket) {
|
|
||||||
super();
|
|
||||||
this.state = "initial";
|
|
||||||
this.callback = null;
|
|
||||||
this.messageQueue = [];
|
|
||||||
this.socket = socket;
|
|
||||||
this.socket.addEventListener("message", (event) => {
|
|
||||||
this.readMessage(event.data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
listen(callback) {
|
|
||||||
if (this.state === "initial") {
|
|
||||||
this.state = "listening";
|
|
||||||
this.callback = callback;
|
|
||||||
while (this.messageQueue.length > 0) {
|
|
||||||
this.readMessage(this.messageQueue.pop());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
readMessage(rawMessage) {
|
|
||||||
if (this.state === "initial") {
|
|
||||||
this.messageQueue.splice(0, 0, rawMessage);
|
|
||||||
} else if (this.state === "listening") {
|
|
||||||
let message;
|
|
||||||
try {
|
|
||||||
message = JSON.parse(rawMessage);
|
|
||||||
} catch (err) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (message && message.event) {
|
|
||||||
case "lspOutput":
|
|
||||||
if (DEBUG) {
|
|
||||||
console.log("RECEIVE LSP:", message.output);
|
|
||||||
}
|
|
||||||
this.callback(message.output);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class RijuMessageWriter extends AbstractMessageWriter {
|
|
||||||
constructor(socket) {
|
|
||||||
super();
|
|
||||||
this.socket = socket;
|
|
||||||
}
|
|
||||||
|
|
||||||
write(msg) {
|
|
||||||
switch (msg.method) {
|
|
||||||
case "initialize":
|
|
||||||
msg.params.processId = null;
|
|
||||||
if (config.lsp.disableDynamicRegistration) {
|
|
||||||
this.disableDynamicRegistration(msg);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "textDocument/didOpen":
|
|
||||||
if (config.lsp.lang) {
|
|
||||||
msg.params.textDocument.languageId = config.lsp.lang;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (DEBUG) {
|
|
||||||
console.log("SEND LSP:", msg);
|
|
||||||
}
|
|
||||||
this.socket.send(JSON.stringify({ event: "lspInput", input: msg }));
|
|
||||||
}
|
|
||||||
|
|
||||||
disableDynamicRegistration(msg) {
|
|
||||||
if (!msg || typeof msg !== "object") return;
|
|
||||||
for (const [key, val] of Object.entries(msg)) {
|
|
||||||
if (key === "dynamicRegistration" && val === true)
|
|
||||||
msg.dynamicRegistration = false;
|
|
||||||
this.disableDynamicRegistration(val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
let serviceLogBuffers = {};
|
let serviceLogBuffers = {};
|
||||||
let serviceLogLines = {};
|
let serviceLogLines = {};
|
||||||
|
@ -147,10 +61,10 @@ async function main() {
|
||||||
window.addEventListener("message", (msg) => {
|
window.addEventListener("message", (msg) => {
|
||||||
try {
|
try {
|
||||||
if (allowedOrigins.indexOf(msg.origin) !== -1) {
|
if (allowedOrigins.indexOf(msg.origin) !== -1) {
|
||||||
sendMessage(msg.data)
|
sendMessage(msg.data);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("message error: ", e)
|
console.log("message error: ", e);
|
||||||
}
|
}
|
||||||
console.log("message from codeamigo", msg);
|
console.log("message from codeamigo", msg);
|
||||||
});
|
});
|
||||||
|
@ -160,7 +74,6 @@ async function main() {
|
||||||
serviceLogLines = {};
|
serviceLogLines = {};
|
||||||
let clientDisposable = null;
|
let clientDisposable = null;
|
||||||
let servicesDisposable = null;
|
let servicesDisposable = null;
|
||||||
connectionStatus.innerText = "connecting...";
|
|
||||||
console.log("Connecting to server...");
|
console.log("Connecting to server...");
|
||||||
socket = new WebSocket(
|
socket = new WebSocket(
|
||||||
(document.location.protocol === "http:" ? "ws://" : "wss://") +
|
(document.location.protocol === "http:" ? "ws://" : "wss://") +
|
||||||
|
@ -168,7 +81,6 @@ async function main() {
|
||||||
`/api/v1/ws?lang=${encodeURIComponent(config.id)}`
|
`/api/v1/ws?lang=${encodeURIComponent(config.id)}`
|
||||||
);
|
);
|
||||||
socket.addEventListener("open", () => {
|
socket.addEventListener("open", () => {
|
||||||
connectionStatus.innerText = "connected";
|
|
||||||
console.log("Successfully connected to server");
|
console.log("Successfully connected to server");
|
||||||
});
|
});
|
||||||
socket.addEventListener("message", (event) => {
|
socket.addEventListener("message", (event) => {
|
||||||
|
@ -202,10 +114,6 @@ async function main() {
|
||||||
term.write(message.output);
|
term.write(message.output);
|
||||||
return;
|
return;
|
||||||
case "lspStopped":
|
case "lspStopped":
|
||||||
lspButton.disabled = false;
|
|
||||||
lspButton.classList.remove("is-loading");
|
|
||||||
lspButton.classList.add("is-light");
|
|
||||||
lspButtonState.innerText = "OFF";
|
|
||||||
if (clientDisposable) {
|
if (clientDisposable) {
|
||||||
clientDisposable.dispose();
|
clientDisposable.dispose();
|
||||||
clientDisposable = null;
|
clientDisposable = null;
|
||||||
|
@ -216,10 +124,6 @@ async function main() {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "lspStarted":
|
case "lspStarted":
|
||||||
lspButton.disabled = false;
|
|
||||||
lspButton.classList.remove("is-loading");
|
|
||||||
lspButton.classList.remove("is-light");
|
|
||||||
lspButtonState.innerText = "ON";
|
|
||||||
if (typeof message.root !== "string") {
|
if (typeof message.root !== "string") {
|
||||||
console.error("Unexpected message from server:", message);
|
console.error("Unexpected message from server:", message);
|
||||||
return;
|
return;
|
||||||
|
@ -270,10 +174,6 @@ async function main() {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "lsp":
|
case "lsp":
|
||||||
lspButton.disabled = false;
|
|
||||||
lspButton.classList.remove("is-loading");
|
|
||||||
lspButton.classList.add("is-light");
|
|
||||||
lspButtonState.innerText = "CRASHED";
|
|
||||||
break;
|
break;
|
||||||
case "terminal":
|
case "terminal":
|
||||||
term.write(`\r\n[${message.error}]`);
|
term.write(`\r\n[${message.error}]`);
|
||||||
|
@ -299,12 +199,6 @@ async function main() {
|
||||||
servicesDisposable.dispose();
|
servicesDisposable.dispose();
|
||||||
servicesDisposable = null;
|
servicesDisposable = null;
|
||||||
}
|
}
|
||||||
if (lspButtonState.innerText === "ON") {
|
|
||||||
lspButton.disabled = false;
|
|
||||||
lspButton.classList.remove("is-loading");
|
|
||||||
lspButton.classList.add("is-light");
|
|
||||||
lspButtonState.innerText = "DISCONNECTED";
|
|
||||||
}
|
|
||||||
scheduleConnect();
|
scheduleConnect();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -312,7 +206,6 @@ async function main() {
|
||||||
function scheduleConnect() {
|
function scheduleConnect() {
|
||||||
idleDueToInactivity = new Date() - lastActivityTimestamp > 10 * 60 * 1000;
|
idleDueToInactivity = new Date() - lastActivityTimestamp > 10 * 60 * 1000;
|
||||||
if (idleDueToInactivity) {
|
if (idleDueToInactivity) {
|
||||||
connectionStatus.innerText = "idle";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const delay = retryDelayMs * Math.random();
|
const delay = retryDelayMs * Math.random();
|
||||||
|
@ -329,22 +222,6 @@ async function main() {
|
||||||
recordActivity();
|
recordActivity();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (config.lsp) {
|
|
||||||
lspButton.classList.remove("is-hidden");
|
|
||||||
lspButton.addEventListener("click", () => {
|
|
||||||
lspButton.classList.add("is-loading");
|
|
||||||
lspButton.disabled = true;
|
|
||||||
lspButton.classList.remove("is-light");
|
|
||||||
if (lspButtonState.innerText === "ON") {
|
|
||||||
sendMessage({ event: "lspStop" });
|
|
||||||
} else {
|
|
||||||
serviceLogBuffers["lsp"] = "";
|
|
||||||
serviceLogLines["lsp"] = [];
|
|
||||||
sendMessage({ event: "lspStart" });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const elt of document.querySelectorAll(".will-close-modal")) {
|
for (const elt of document.querySelectorAll(".will-close-modal")) {
|
||||||
elt.addEventListener("click", closeModal);
|
elt.addEventListener("click", closeModal);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue