Compare commits

..

16 Commits

Author SHA1 Message Date
ef904444e4 Revert "Update Docker Dompose plugin to 2.23.3 (#303)"
This reverts commit 6a3eebfd57.
2023-12-17 06:13:34 +08:00
ac2a62abb1 Update to 1.3.4 2023-12-16 23:22:27 +08:00
e77ff3622d Translations update from Kuma Weblate (#302) 2023-12-16 23:19:50 +08:00
b5bd9a711a Translated using Weblate (French)
Currently translated at 100.0% (101 of 101 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/fr/
2023-12-16 15:18:03 +00:00
442c7fce67 Translated using Weblate (Thai)
Currently translated at 100.0% (100 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/th/
2023-12-16 15:18:03 +00:00
7d55a84aa2 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (100 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/zh_Hant/
2023-12-16 15:18:03 +00:00
22bbba9652 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (100 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/uk/
2023-12-16 15:18:03 +00:00
3bc6779af4 Translated using Weblate (Slovenian)
Currently translated at 97.0% (97 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/sl/
2023-12-16 15:18:03 +00:00
3ef2be1c11 Translated using Weblate (Italian)
Currently translated at 100.0% (100 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/it/
2023-12-16 15:18:03 +00:00
f6f7283f09 Translated using Weblate (Czech)
Currently translated at 99.0% (99 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/cs/
2023-12-16 15:18:03 +00:00
69e237a676 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (100 of 100 strings)

Translation: Dockge/dockge
Translate-URL: https://weblate.kuma.pet/projects/dockge/dockge/bg/
2023-12-16 15:18:03 +00:00
6a3eebfd57 Update Docker Dompose plugin to 2.23.3 (#303) 2023-12-16 20:51:24 +08:00
3c137122b6 Update reformat-changelog.ts 2023-12-16 17:58:07 +08:00
e2819afce1 Terminal text cols adjusts to terminal container. (#285)
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-16 17:57:21 +08:00
94ca8a152a Fix: Only adding folders to stack with a compose file. (#299)
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-15 18:15:47 +08:00
db0add7e4c Fixed envsubst issue (#301) 2023-12-15 18:08:48 +08:00
18 changed files with 191 additions and 47 deletions

View File

@ -162,9 +162,44 @@ export class TerminalSocketHandler extends SocketHandler {
} }
}); });
// TODO: Resize Terminal // Resize Terminal
socket.on("terminalResize", async (rows : unknown) => { socket.on(
"terminalResize",
async (terminalName: unknown, rows: unknown, cols: unknown) => {
log.info("terminalResize", `Terminal: ${terminalName}`);
try {
checkLogin(socket);
if (typeof terminalName !== "string") {
throw new Error("Terminal name must be a string.");
}
}); if (typeof rows !== "number") {
throw new Error("Command must be a number.");
}
if (typeof cols !== "number") {
throw new Error("Command must be a number.");
}
let terminal = Terminal.getTerminal(terminalName);
// log.info("terminal", terminal);
if (terminal instanceof Terminal) {
//log.debug("terminalInput", "Terminal found, writing to terminal.");
terminal.rows = rows;
terminal.cols = cols;
} else {
throw new Error(`${terminalName} Terminal not found.`);
}
} catch (e) {
log.debug(
"terminalResize",
// Added to prevent the lint error when adding the type
// and ts type checker saying type is unknown.
// @ts-ignore
`Error on ${terminalName}: ${e.message}`
);
}
}
);
} }
} }

View File

@ -5,6 +5,7 @@ import yaml from "yaml";
import { DockgeSocket, fileExists, ValidationError } from "./util-server"; import { DockgeSocket, fileExists, ValidationError } from "./util-server";
import path from "path"; import path from "path";
import { import {
acceptedComposeFileNames,
COMBINED_TERMINAL_COLS, COMBINED_TERMINAL_COLS,
COMBINED_TERMINAL_ROWS, COMBINED_TERMINAL_ROWS,
CREATED_FILE, CREATED_FILE,
@ -40,8 +41,7 @@ export class Stack {
if (!skipFSOperations) { if (!skipFSOperations) {
// Check if compose file name is different from compose.yaml // Check if compose file name is different from compose.yaml
const supportedFileNames = [ "compose.yaml", "compose.yml", "docker-compose.yml", "docker-compose.yaml" ]; for (const filename of acceptedComposeFileNames) {
for (const filename of supportedFileNames) {
if (fs.existsSync(path.join(this.path, filename))) { if (fs.existsSync(path.join(this.path, filename))) {
this._composeFileName = filename; this._composeFileName = filename;
break; break;
@ -222,6 +222,26 @@ export class Stack {
} }
} }
/**
* Checks if a compose file exists in the specified directory.
* @async
* @static
* @param {string} stacksDir - The directory of the stack.
* @param {string} filename - The name of the directory to check for the compose file.
* @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether any compose file exists.
*/
static async composeFileExists(stacksDir : string, filename : string) : Promise<boolean> {
let filenamePath = path.join(stacksDir, filename);
// Check if any compose file exists
for (const filename of acceptedComposeFileNames) {
let composeFile = path.join(filenamePath, filename);
if (await fileExists(composeFile)) {
return true;
}
}
return false;
}
static async getStackList(server : DockgeServer, useCacheForManaged = false) : Promise<Map<string, Stack>> { static async getStackList(server : DockgeServer, useCacheForManaged = false) : Promise<Map<string, Stack>> {
let stacksDir = server.stacksDir; let stacksDir = server.stacksDir;
let stackList : Map<string, Stack>; let stackList : Map<string, Stack>;
@ -242,6 +262,10 @@ export class Stack {
if (!stat.isDirectory()) { if (!stat.isDirectory()) {
continue; continue;
} }
// If no compose file exists, skip it
if (!await Stack.composeFileExists(stacksDir, filename)) {
continue;
}
let stack = await this.getStack(server, filename); let stack = await this.getStack(server, filename);
stack._status = CREATED_FILE; stack._status = CREATED_FILE;
stackList.set(filename, stack); stackList.set(filename, stack);

View File

@ -67,6 +67,7 @@ export class Terminal {
set cols(cols : number) { set cols(cols : number) {
this._cols = cols; this._cols = cols;
log.debug("Terminal", `Terminal cols: ${this._cols}`); // Added to check if cols is being set when changing terminal size.
try { try {
this.ptyProcess?.resize(this.cols, this.rows); this.ptyProcess?.resize(this.cols, this.rows);
} catch (e) { } catch (e) {

View File

@ -116,6 +116,13 @@ export const allowedRawKeys = [
"\u0003", // Ctrl + C "\u0003", // Ctrl + C
]; ];
export const acceptedComposeFileNames = [
"compose.yaml",
"docker-compose.yaml",
"docker-compose.yml",
"compose.yml",
];
/** /**
* Generate a decimal integer number from a string * Generate a decimal integer number from a string
* @param str Input * @param str Input

View File

@ -9,17 +9,23 @@ const template = `
> >
### 🆕 New Features ### 🆕 New Features
-
### ⬆️ Improvements ### ⬆️ Improvements
-
### 🐛 Bug Fixes ### 🐛 Bug Fixes
-
### 🦎 Translation Contributions ### 🦎 Translation Contributions
-
### ⬆️ Security Fixes ### ⬆️ Security Fixes
-
### Others ### Others
- Other small changes, code refactoring and comment/doc updates in this repo: - Other small changes, code refactoring and comment/doc updates in this repo:
-
Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests. Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.
`; `;

View File

@ -5,7 +5,8 @@
</template> </template>
<script> <script>
import { Terminal } from "xterm"; import { Terminal } from "@xterm/xterm";
import { FitAddon } from "@xterm/addon-fit";
import { WebLinksAddon } from "xterm-addon-web-links"; import { WebLinksAddon } from "xterm-addon-web-links";
import { TERMINAL_COLS, TERMINAL_ROWS } from "../../../backend/util-common"; import { TERMINAL_COLS, TERMINAL_ROWS } from "../../../backend/util-common";
@ -122,10 +123,12 @@ export default {
} }
}); });
} }
// Fit the terminal width to the div container size after terminal is created.
this.updateTerminalSize();
}, },
unmounted() { unmounted() {
window.removeEventListener("resize", this.onResizeEvent); // Remove the resize event listener from the window object.
this.$root.unbindTerminal(this.name); this.$root.unbindTerminal(this.name);
this.terminal.dispose(); this.terminal.dispose();
}, },
@ -208,6 +211,30 @@ export default {
} }
}); });
}); });
},
/**
* Update the terminal size to fit the container size.
*
* If the terminalFitAddOn is not created, creates it, loads it and then fits the terminal to the appropriate size.
* It then addes an event listener to the window object to listen for resize events and calls the fit method of the terminalFitAddOn.
*/
updateTerminalSize() {
if (!Object.hasOwn(this, "terminalFitAddOn")) {
this.terminalFitAddOn = new FitAddon();
this.terminal.loadAddon(this.terminalFitAddOn);
window.addEventListener("resize", this.onResizeEvent);
}
this.terminalFitAddOn.fit();
},
/**
* Handles the resize event of the terminal component.
*/
onResizeEvent() {
this.terminalFitAddOn.fit();
let rows = this.terminal.rows;
let cols = this.terminal.cols;
this.$root.getSocket().emit("terminalResize", this.name, rows, cols);
} }
} }
}; };

View File

@ -12,7 +12,7 @@
"registry": "Регистър", "registry": "Регистър",
"compose": "Compose", "compose": "Compose",
"addFirstStackMsg": "Създайте вашия първи стак!", "addFirstStackMsg": "Създайте вашия първи стак!",
"stackName" : "Име на стак", "stackName": "Име на стак",
"deployStack": "Разположи", "deployStack": "Разположи",
"deleteStack": "Изтрий", "deleteStack": "Изтрий",
"stopStack": "Спри", "stopStack": "Спри",
@ -22,7 +22,7 @@
"editStack": "Редактирай", "editStack": "Редактирай",
"discardStack": "Отхвърли", "discardStack": "Отхвърли",
"saveStackDraft": "Запази", "saveStackDraft": "Запази",
"notAvailableShort" : "N/A", "notAvailableShort": "N/A",
"deleteStackMsg": "Сигурни ли сте, че желаете да изтриете този стак?", "deleteStackMsg": "Сигурни ли сте, че желаете да изтриете този стак?",
"stackNotManagedByDockgeMsg": "Този стак не се управлява от Dockge.", "stackNotManagedByDockgeMsg": "Този стак не се управлява от Dockge.",
"primaryHostname": "Основно име на хост", "primaryHostname": "Основно име на хост",
@ -90,5 +90,13 @@
"Allowed commands:": "Позволени команди:", "Allowed commands:": "Позволени команди:",
"Internal Networks": "Вътрешни мрежи", "Internal Networks": "Вътрешни мрежи",
"External Networks": "Външни мрежи", "External Networks": "Външни мрежи",
"No External Networks": "Не са налични външни мрежи" "No External Networks": "Не са налични външни мрежи",
"reverseProxyMsg2": "Проверете как да го конфигурирате за WebSocket",
"downStack": "Спри и изключи",
"reverseProxyMsg1": "Използвате ревърс прокси?",
"Cannot connect to the socket server.": "Не може да се свърже със сокет сървъра.",
"url": "URL адрес | URL адреси",
"extra": "Допълнително",
"reconnecting...": "Повторно свързване…",
"connecting...": "Свързване със сокет сървъра…"
} }

View File

@ -3,39 +3,39 @@
"Create your admin account": "Vytvořit účet administrátora", "Create your admin account": "Vytvořit účet administrátora",
"authIncorrectCreds": "Nesprávné uživatelské jméno nebo heslo.", "authIncorrectCreds": "Nesprávné uživatelské jméno nebo heslo.",
"PasswordsDoNotMatch": "Hesla se neshodují.", "PasswordsDoNotMatch": "Hesla se neshodují.",
"Repeat Password": "Opakujte heslo", "Repeat Password": "Napište Heslo Znovu",
"Create": "Vytvořit", "Create": "Vytvořit",
"signedInDisp": "Přihlášen jako {0}", "signedInDisp": "Přihlášen jako {0}",
"signedInDispDisabled": "Ověření zakázáno.", "signedInDispDisabled": "Ověření Zakázáno.",
"home": "Domů", "home": "Domů",
"console": "Konzole", "console": "Konzole",
"registry": "Registry", "registry": "Registry",
"compose": "Compose", "compose": "Komponovat",
"addFirstStackMsg": "Vytvořte svůj první stack!", "addFirstStackMsg": "Vytvořte svůj první zásobník!",
"stackName": "Název stacku", "stackName": "Název Zásobníku",
"deployStack": "Nainstalovat", "deployStack": "Nainstalovat",
"deleteStack": "Smazat", "deleteStack": "Smazat",
"stopStack": "Zastavit", "stopStack": "Zastavit",
"restartStack": "Restartovat", "restartStack": "Restartovat",
"updateStack": "Aktualizovat", "updateStack": "Aktualizovat",
"startStack": "Spustit", "startStack": "Spustit",
"downStack": "Zastavit a vypnout", "downStack": "Zastavit & Vypnout",
"editStack": "Upravit", "editStack": "Upravit",
"discardStack": "Zahodit", "discardStack": "Zahodit",
"saveStackDraft": "Uložit", "saveStackDraft": "Uložit",
"notAvailableShort": "N/A", "notAvailableShort": "N/A",
"deleteStackMsg": "Opravdu chcete smazat tento stack?", "deleteStackMsg": "Opravdu chcete smazat tento zásobník?",
"stackNotManagedByDockgeMsg": "Tento stack není spravován systémem Dockge.", "stackNotManagedByDockgeMsg": "Tento stack není spravován systémem Dockge.",
"primaryHostname": "Primární název hostitele", "primaryHostname": "Primární název hostitele",
"general": "Obecné", "general": "Obecné",
"container": "Kontejner | Kontejnery", "container": "Kontejner | Kontejnery",
"scanFolder": "Prohledat složku se stacky", "scanFolder": "Prohledat složku se zásobníky",
"dockerImage": "Obrázek", "dockerImage": "Obrázek",
"restartPolicyUnlessStopped": "Pokud není zastaveno", "restartPolicyUnlessStopped": "Pokud není zastaveno",
"restartPolicyAlways": "Vždy", "restartPolicyAlways": "Vždy",
"restartPolicyOnFailure": "Při selhání", "restartPolicyOnFailure": "Při Selhání",
"restartPolicyNo": "Ne", "restartPolicyNo": "Ne",
"environmentVariable": "Proměnná prostředí | Proměnné prostředí", "environmentVariable": "Proměnná Prostředí | Proměnné Prostředí",
"restartPolicy": "Politika restartu", "restartPolicy": "Politika restartu",
"containerName": "Název kontejneru", "containerName": "Název kontejneru",
"port": "Port | Porty", "port": "Port | Porty",
@ -91,5 +91,11 @@
"Allowed commands:": "Povolené příkazy:", "Allowed commands:": "Povolené příkazy:",
"Internal Networks": "Interní sítě", "Internal Networks": "Interní sítě",
"External Networks": "Externí sítě", "External Networks": "Externí sítě",
"No External Networks": "Žádné externí sítě" "No External Networks": "Žádné externí sítě",
"reconnecting...": "Opětovné připojení…",
"url": "Adresa URL | Adresy URL",
"extra": "Extra",
"reverseProxyMsg1": "Používáte Reverzní proxy server?",
"reverseProxyMsg2": "Podívat se jak to nastavit pro WebSocket",
"Cannot connect to the socket server.": "Nelze se připojit k serveru ."
} }

View File

@ -98,5 +98,6 @@
"downStack": "Arrêter et désactiver", "downStack": "Arrêter et désactiver",
"reverseProxyMsg1": "Utilisez vous un proxy inverse ?", "reverseProxyMsg1": "Utilisez vous un proxy inverse ?",
"Cannot connect to the socket server.": "Impossible de se connecter au serveur socket.", "Cannot connect to the socket server.": "Impossible de se connecter au serveur socket.",
"reconnecting...": "Reconnexion…" "reconnecting...": "Reconnexion…",
"newUpdate": "Nouvelle mise à jour"
} }

View File

@ -10,10 +10,10 @@
"home": "Home", "home": "Home",
"console": "Console", "console": "Console",
"registry": "Registro", "registry": "Registro",
"compose": "Compose", "compose": "Componi",
"addFirstStackMsg": "Componi il tuo primo stack!", "addFirstStackMsg": "Componi il tuo primo stack!",
"stackName": "Nome dello stack", "stackName": "Nome dello stack",
"deployStack": "Deploy", "deployStack": "Rilascia",
"deleteStack": "Cancella", "deleteStack": "Cancella",
"stopStack": "Stop", "stopStack": "Stop",
"restartStack": "Riavvia", "restartStack": "Riavvia",
@ -75,7 +75,7 @@
"Also check beta release": "Controlla anche le release in beta", "Also check beta release": "Controlla anche le release in beta",
"Remember me": "Ricordami", "Remember me": "Ricordami",
"Login": "Login", "Login": "Login",
"Username": "Username", "Username": "Nome Utente",
"Password": "Password", "Password": "Password",
"Settings": "Impostazioni", "Settings": "Impostazioni",
"Logout": "Logout", "Logout": "Logout",
@ -97,5 +97,6 @@
"Cannot connect to the socket server.": "Impossibile connettersi al server socket.", "Cannot connect to the socket server.": "Impossibile connettersi al server socket.",
"connecting...": "Connessione al server socket…", "connecting...": "Connessione al server socket…",
"extra": "Extra", "extra": "Extra",
"reconnecting...": "Riconnessione…" "reconnecting...": "Riconnessione…",
"url": "Indirizzo | Indirizzi"
} }

View File

@ -90,5 +90,10 @@
"Allowed commands:": "Dovoljeni ukazi:", "Allowed commands:": "Dovoljeni ukazi:",
"Internal Networks": "Notranja omrežja", "Internal Networks": "Notranja omrežja",
"External Networks": "Zunanja omrežja", "External Networks": "Zunanja omrežja",
"No External Networks": "Ni zunanjih omrežij" "No External Networks": "Ni zunanjih omrežij",
"downStack": "Ustavi & Odstrani",
"connecting...": "Povezovanje s strežnikom…",
"reverseProxyMsg1": "Uporabljate obratni proxy?",
"extra": "Dodatno",
"reconnecting...": "Ponovna povezava …"
} }

View File

@ -91,5 +91,12 @@
"Allowed commands:": "คำสั่งที่อนุญาต:", "Allowed commands:": "คำสั่งที่อนุญาต:",
"Internal Networks": "เครือข่ายภายใน", "Internal Networks": "เครือข่ายภายใน",
"External Networks": "เครือข่ายภายนอก", "External Networks": "เครือข่ายภายนอก",
"No External Networks": "ไม่มีเครือข่ายภายนอก" "No External Networks": "ไม่มีเครือข่ายภายนอก",
} "reverseProxyMsg2": "ตรวจสอบวิธีกำหนดค่าสำหรับ WebSocket",
"Cannot connect to the socket server.": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ socket ได้",
"reverseProxyMsg1": "ใช้ Reverse Proxy หรือไม่?",
"connecting...": "กำลังเชื่อมต่อกับเซิร์ฟเวอร์ socket…",
"url": "URL | URLs",
"extra": "พิเศษ",
"reconnecting...": "กำลังเชื่อมต่อใหม่…"
}

View File

@ -92,7 +92,7 @@
"External Networks": "Зовнішні мережі", "External Networks": "Зовнішні мережі",
"No External Networks": "Немає зовнішніх мереж", "No External Networks": "Немає зовнішніх мереж",
"downStack": "Зупинити і вимкнути", "downStack": "Зупинити і вимкнути",
"reverseProxyMsg1": "Використовувати зворотній проксі?", "reverseProxyMsg1": "Використовуєте зворотній проксі?",
"Cannot connect to the socket server.": "Не вдається підключитися до сервера сокетів.", "Cannot connect to the socket server.": "Не вдається підключитися до сервера сокетів.",
"reconnecting...": "Повторне підключення…", "reconnecting...": "Повторне підключення…",
"connecting...": "Підключення до сервера сокетів…", "connecting...": "Підключення до сервера сокетів…",

View File

@ -51,7 +51,7 @@
"autoGet": "自動取得", "autoGet": "自動取得",
"add": "新增", "add": "新增",
"Edit": "編輯", "Edit": "編輯",
"applyToYAML": "用到YAML", "applyToYAML": "用到 YAML",
"createExternalNetwork": "建立", "createExternalNetwork": "建立",
"addInternalNetwork": "新增", "addInternalNetwork": "新增",
"Save": "儲存", "Save": "儲存",
@ -71,7 +71,7 @@
"Frontend Version": "前端版本", "Frontend Version": "前端版本",
"Check Update On GitHub": "在 GitHub 上檢查更新", "Check Update On GitHub": "在 GitHub 上檢查更新",
"Show update if available": "有更新時提醒我", "Show update if available": "有更新時提醒我",
"Also check beta release": "同時檢查 Beta 渠道更新", "Also check beta release": "同時檢查 Beta 更新",
"Remember me": "記住我", "Remember me": "記住我",
"Login": "登入", "Login": "登入",
"Username": "使用者名稱", "Username": "使用者名稱",

View File

@ -10,12 +10,12 @@ import { i18n } from "./i18n";
// Dependencies // Dependencies
import "bootstrap"; import "bootstrap";
import Toast, { POSITION, useToast } from "vue-toastification"; import Toast, { POSITION, useToast } from "vue-toastification";
import "xterm/lib/xterm.js"; import "@xterm/xterm/lib/xterm.js";
// CSS // CSS
import "@fontsource/jetbrains-mono"; import "@fontsource/jetbrains-mono";
import "vue-toastification/dist/index.css"; import "vue-toastification/dist/index.css";
import "xterm/css/xterm.css"; import "@xterm/xterm/css/xterm.css";
import "./styles/main.scss"; import "./styles/main.scss";
// Minxins // Minxins

View File

@ -2,7 +2,7 @@ import { io } from "socket.io-client";
import { Socket } from "socket.io-client"; import { Socket } from "socket.io-client";
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import jwtDecode from "jwt-decode"; import jwtDecode from "jwt-decode";
import { Terminal } from "xterm"; import { Terminal } from "@xterm/xterm";
let socket : Socket; let socket : Socket;

View File

@ -1,6 +1,6 @@
{ {
"name": "dockge", "name": "dockge",
"version": "1.3.3", "version": "1.3.4",
"type": "module", "type": "module",
"engines": { "engines": {
"node": ">= 18.0.0 && <= 18.17.1" "node": ">= 18.0.0 && <= 18.17.1"
@ -55,8 +55,6 @@
"yaml": "~2.3.4" "yaml": "~2.3.4"
}, },
"devDependencies": { "devDependencies": {
"concurrently": "^8.2.2",
"wait-on": "^7.2.0",
"@actions/github": "^6.0.0", "@actions/github": "^6.0.0",
"@fontsource/jetbrains-mono": "^5.0.18", "@fontsource/jetbrains-mono": "^5.0.18",
"@fortawesome/fontawesome-svg-core": "6.4.2", "@fortawesome/fontawesome-svg-core": "6.4.2",
@ -71,8 +69,11 @@
"@typescript-eslint/eslint-plugin": "~6.8.0", "@typescript-eslint/eslint-plugin": "~6.8.0",
"@typescript-eslint/parser": "~6.8.0", "@typescript-eslint/parser": "~6.8.0",
"@vitejs/plugin-vue": "~4.5.2", "@vitejs/plugin-vue": "~4.5.2",
"@xterm/addon-fit": "beta",
"@xterm/xterm": "beta",
"bootstrap": "5.3.2", "bootstrap": "5.3.2",
"bootstrap-vue-next": "~0.14.10", "bootstrap-vue-next": "~0.14.10",
"concurrently": "^8.2.2",
"cross-env": "~7.0.3", "cross-env": "~7.0.3",
"eslint": "~8.50.0", "eslint": "~8.50.0",
"eslint-plugin-jsdoc": "~46.8.2", "eslint-plugin-jsdoc": "~46.8.2",
@ -90,7 +91,7 @@
"vue-qrcode": "~2.2.0", "vue-qrcode": "~2.2.0",
"vue-router": "~4.2.5", "vue-router": "~4.2.5",
"vue-toastification": "2.0.0-rc.5", "vue-toastification": "2.0.0-rc.5",
"xterm": "5.4.0-beta.37", "wait-on": "^7.2.0",
"xterm-addon-web-links": "~0.9.0" "xterm-addon-web-links": "~0.9.0"
} }
} }

31
pnpm-lock.yaml generated
View File

@ -133,6 +133,12 @@ devDependencies:
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: ~4.5.2 specifier: ~4.5.2
version: 4.5.2(vite@5.0.7)(vue@3.3.11) version: 4.5.2(vite@5.0.7)(vue@3.3.11)
'@xterm/addon-fit':
specifier: beta
version: 0.9.0-beta.17(@xterm/xterm@5.4.0-beta.17)
'@xterm/xterm':
specifier: beta
version: 5.4.0-beta.17
bootstrap: bootstrap:
specifier: 5.3.2 specifier: 5.3.2
version: 5.3.2(@popperjs/core@2.11.8) version: 5.3.2(@popperjs/core@2.11.8)
@ -196,12 +202,9 @@ devDependencies:
wait-on: wait-on:
specifier: ^7.2.0 specifier: ^7.2.0
version: 7.2.0 version: 7.2.0
xterm:
specifier: 5.4.0-beta.37
version: 5.4.0-beta.37
xterm-addon-web-links: xterm-addon-web-links:
specifier: ~0.9.0 specifier: ~0.9.0
version: 0.9.0(xterm@5.4.0-beta.37) version: 0.9.0(xterm@5.3.0)
packages: packages:
@ -1569,6 +1572,18 @@ packages:
- vue - vue
dev: true dev: true
/@xterm/addon-fit@0.9.0-beta.17(@xterm/xterm@5.4.0-beta.17):
resolution: {integrity: sha512-4jYMsbyferF29hF0vCaQj6CQlT2A6ML6DhLZdi6cCZI5qn60mGUXZfDeO/Qoq2nmyK/PBrPyFYSOzWapSy45Zg==}
peerDependencies:
'@xterm/xterm': ^5.0.0
dependencies:
'@xterm/xterm': 5.4.0-beta.17
dev: true
/@xterm/xterm@5.4.0-beta.17:
resolution: {integrity: sha512-EhQsTHeO7VhCOnYLdrowWAqEbmZKf6k6Z/Rd3GriikB394jivux6OBcJbt7QdewIOAKqFah53d4rNXfz3/6mwQ==}
dev: true
/abbrev@1.1.1: /abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
requiresBuild: true requiresBuild: true
@ -5524,16 +5539,16 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
dev: false dev: false
/xterm-addon-web-links@0.9.0(xterm@5.4.0-beta.37): /xterm-addon-web-links@0.9.0(xterm@5.3.0):
resolution: {integrity: sha512-LIzi4jBbPlrKMZF3ihoyqayWyTXAwGfu4yprz1aK2p71e9UKXN6RRzVONR0L+Zd+Ik5tPVI9bwp9e8fDTQh49Q==} resolution: {integrity: sha512-LIzi4jBbPlrKMZF3ihoyqayWyTXAwGfu4yprz1aK2p71e9UKXN6RRzVONR0L+Zd+Ik5tPVI9bwp9e8fDTQh49Q==}
peerDependencies: peerDependencies:
xterm: ^5.0.0 xterm: ^5.0.0
dependencies: dependencies:
xterm: 5.4.0-beta.37 xterm: 5.3.0
dev: true dev: true
/xterm@5.4.0-beta.37: /xterm@5.3.0:
resolution: {integrity: sha512-ys+mXqLFrJc7khmYN/MgBnfLv38NgXfkwkEXsCZKHGqn3h2xUBvTvsrSEWO3NQeDPLj4zMr1RwqTblMK9St3BA==} resolution: {integrity: sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==}
dev: true dev: true
/y18n@4.0.3: /y18n@4.0.3: