diff --git a/backend/agent-socket-handlers/docker-socket-handler.ts b/backend/agent-socket-handlers/docker-socket-handler.ts index 8174601..5e9dbcb 100644 --- a/backend/agent-socket-handlers/docker-socket-handler.ts +++ b/backend/agent-socket-handlers/docker-socket-handler.ts @@ -3,6 +3,8 @@ import { DockgeServer } from "../dockge-server"; import { callbackError, callbackResult, checkLogin, DockgeSocket, ValidationError } from "../util-server"; import { Stack } from "../stack"; import { AgentSocket } from "../../common/agent-socket"; +import { Terminal } from "../terminal"; +import { getComposeTerminalName } from "../../common/util-common"; export class DockerSocketHandler extends AgentSocketHandler { create(socket : DockgeSocket, server : DockgeServer, agentSocket : AgentSocket) { @@ -25,6 +27,47 @@ export class DockerSocketHandler extends AgentSocketHandler { } }); + agentSocket.on("gitDeployStack", async (stackName : unknown, gitUrl : unknown, branch : unknown, isAdd : unknown, callback) => { + try { + checkLogin(socket); + + if (typeof(stackName) !== "string") { + throw new ValidationError("Stack name must be a string"); + } + if (typeof(gitUrl) !== "string") { + throw new ValidationError("Git URL must be a string"); + } + if (typeof(branch) !== "string") { + throw new ValidationError("Git Ref must be a string"); + } + + const terminalName = getComposeTerminalName(socket.endpoint, stackName); + + // TODO: this could be done smarter. + if (!isAdd) { + const stack = await Stack.getStack(server, stackName); + await stack.delete(socket); + } + + let exitCode = await Terminal.exec(server, socket, terminalName, "git", [ "clone", "-b", branch, gitUrl, stackName ], server.stacksDir); + if (exitCode !== 0) { + throw new Error("Failed to clone git repo"); + } + + const stack = await Stack.getStack(server, stackName); + await stack.deploy(socket); + + server.sendStackList(); + callbackResult({ + ok: true, + msg: "Deployed" + }, callback); + stack.joinCombinedTerminal(socket); + } catch (e) { + callbackError(e, callback); + } + }); + agentSocket.on("saveStack", async (name : unknown, composeYAML : unknown, composeENV : unknown, isAdd : unknown, callback) => { try { checkLogin(socket); @@ -196,6 +239,27 @@ export class DockerSocketHandler extends AgentSocketHandler { } }); + // gitSync + agentSocket.on("gitSync", async (stackName : unknown, callback) => { + try { + checkLogin(socket); + + if (typeof(stackName) !== "string") { + throw new ValidationError("Stack name must be a string"); + } + + const stack = await Stack.getStack(server, stackName); + await stack.gitSync(socket); + callbackResult({ + ok: true, + msg: "Synced" + }, callback); + server.sendStackList(); + } catch (e) { + callbackError(e, callback); + } + }); + // down stack agentSocket.on("downStack", async (stackName : unknown, callback) => { try { diff --git a/backend/dockge-server.ts b/backend/dockge-server.ts index 8f734cc..eccad0e 100644 --- a/backend/dockge-server.ts +++ b/backend/dockge-server.ts @@ -1,5 +1,6 @@ import "dotenv/config"; import { MainRouter } from "./routers/main-router"; +import { WebhookRouter } from "./routers/webhook-router"; import * as fs from "node:fs"; import { PackageJson } from "type-fest"; import { Database } from "./database"; @@ -21,7 +22,7 @@ import { R } from "redbean-node"; import { genSecret, isDev, LooseObject } from "../common/util-common"; import { generatePasswordHash } from "./password-hash"; import { Bean } from "redbean-node/dist/bean"; -import { Arguments, Config, DockgeSocket } from "./util-server"; +import { Arguments, Config, DockgeSocket, ValidationError } from "./util-server"; import { DockerSocketHandler } from "./agent-socket-handlers/docker-socket-handler"; import expressStaticGzip from "express-static-gzip"; import path from "path"; @@ -38,6 +39,8 @@ import { AgentSocket } from "../common/agent-socket"; import { ManageAgentSocketHandler } from "./socket-handlers/manage-agent-socket-handler"; import { Terminal } from "./terminal"; +const GIT_UPDATE_CHECKER_INTERVAL_MS = 1000 * 60 * 10; + export class DockgeServer { app : Express; httpServer : http.Server; @@ -45,12 +48,14 @@ export class DockgeServer { io : socketIO.Server; config : Config; indexHTML : string = ""; + gitUpdateInterval? : NodeJS.Timeout; /** * List of express routers */ routerList : Router[] = [ new MainRouter(), + new WebhookRouter(), ]; /** @@ -204,6 +209,17 @@ export class DockgeServer { }; } + // add a middleware to handle errors + this.app.use((err : unknown, _req : express.Request, res : express.Response, _next : express.NextFunction) => { + if (err instanceof Error) { + res.status(500).json({ error: err.message }); + } else if (err instanceof ValidationError) { + res.status(400).json({ error: err.message }); + } else { + res.status(500).json({ error: "Unknown error: " + err }); + } + }); + // Create Socket.io this.io = new socketIO.Server(this.httpServer, { cors, @@ -398,6 +414,7 @@ export class DockgeServer { }); checkVersion.startInterval(); + this.startGitUpdater(); }); gracefulShutdown(this.httpServer, { @@ -610,6 +627,47 @@ export class DockgeServer { } } + /** + * Start the git updater. This checks for outdated stacks and updates them. + * @param useCache + */ + async startGitUpdater(useCache = false) { + const check = async () => { + if (await Settings.get("gitAutoUpdate") !== true) { + return; + } + + log.debug("git-updater", "checking for outdated stacks"); + + let socketList = this.io.sockets.sockets.values(); + + let stackList; + for (let socket of socketList) { + let dockgeSocket = socket as DockgeSocket; + + // Get the list of stacks only once + if (!stackList) { + stackList = await Stack.getStackList(this, useCache); + } + + for (let [ stackName, stack ] of stackList) { + + if (stack.isGitRepo) { + stack.checkRemoteChanges().then(async (outdated) => { + if (outdated) { + log.info("git-updater", `Stack ${stackName} is outdated, Updating...`); + await stack.update(dockgeSocket); + } + }); + } + } + } + }; + + await check(); + this.gitUpdateInterval = setInterval(check, GIT_UPDATE_CHECKER_INTERVAL_MS); + } + async getDockerNetworkList() : Promise { let res = await childProcessAsync.spawn("docker", [ "network", "ls", "--format", "{{.Name}}" ], { encoding: "utf-8", diff --git a/backend/routers/webhook-router.ts b/backend/routers/webhook-router.ts new file mode 100644 index 0000000..f86787d --- /dev/null +++ b/backend/routers/webhook-router.ts @@ -0,0 +1,34 @@ +import { DockgeServer } from "../dockge-server"; +import { log } from "../log"; +import { Router } from "../router"; +import express, { Express, Router as ExpressRouter } from "express"; +import { Stack } from "../stack"; + +export class WebhookRouter extends Router { + create(app: Express, server: DockgeServer): ExpressRouter { + const router = express.Router(); + + router.get("/webhook/update/:stackname", async (req, res, _next) => { + try { + const stackname = req.params.stackname; + + log.info("router", `Webhook received for stack: ${stackname}`); + const stack = await Stack.getStack(server, stackname); + if (!stack) { + log.error("router", `Stack not found: ${stackname}`); + res.status(404).json({ message: `Stack not found: ${stackname}` }); + return; + } + await stack.gitSync(undefined); + + // Send a response + res.json({ message: `Updated stack: ${stackname}` }); + + } catch (error) { + _next(error); + } + }); + + return router; + } +} diff --git a/backend/stack.ts b/backend/stack.ts index fbce500..4328e79 100644 --- a/backend/stack.ts +++ b/backend/stack.ts @@ -19,6 +19,8 @@ import { import { InteractiveTerminal, Terminal } from "./terminal"; import childProcessAsync from "promisify-child-process"; import { Settings } from "./settings"; +import { execSync } from "child_process"; +import ini from "ini"; export class Stack { @@ -84,6 +86,10 @@ export class Stack { status: this._status, tags: [], isManagedByDockge: this.isManagedByDockge, + isGitRepo: this.isGitRepo, + gitUrl: this.gitUrl, + branch: this.branch, + webhook: this.webhook, composeFileName: this._composeFileName, endpoint, }; @@ -107,6 +113,39 @@ export class Stack { return fs.existsSync(this.path) && fs.statSync(this.path).isDirectory(); } + get isGitRepo() : boolean { + return fs.existsSync(path.join(this.path, ".git")) && fs.statSync(path.join(this.path, ".git")).isDirectory(); + } + + get gitUrl() : string { + if (this.isGitRepo) { + const gitConfig = ini.parse(fs.readFileSync(path.join(this.path, ".git", "config"), "utf-8")); + return gitConfig["remote \"origin\""]?.url; + } + return ""; + } + + get branch() : string { + if (this.isGitRepo) { + try { + let stdout = execSync("git branch --show-current", { cwd: this.path }); + return stdout.toString().trim(); + } catch (error) { + return ""; + } + } + return ""; + } + + get webhook() : string { + //TODO: refine this. + if (this.server.config.hostname) { + return `http://${this.server.config.hostname}:${this.server.config.port}/webhook/update/${this.name}`; + } else { + return `http://localhost:${this.server.config.port}/webhook/update/${this.name}`; + } + } + get status() : number { return this._status; } @@ -445,6 +484,7 @@ export class Stack { async update(socket: DockgeSocket) { const terminalName = getComposeTerminalName(socket.endpoint, this.name); + let exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", [ "compose", "pull" ], this.path); if (exitCode !== 0) { throw new Error("Failed to pull, please check the terminal output for more information."); @@ -464,6 +504,54 @@ export class Stack { return exitCode; } + async gitSync(socket?: DockgeSocket) { + const terminalName = socket ? getComposeTerminalName(socket.endpoint, this.name) : ""; + + if (!this.isGitRepo) { + throw new Error("This stack is not a git repository"); + } + + let exitCode = await Terminal.exec(this.server, socket, terminalName, "git", [ "pull", "--strategy-option", "theirs" ], this.path); + if (exitCode !== 0) { + throw new Error("Failed to sync, please check the terminal output for more information."); + } + + // If the stack is not running, we don't need to restart it + await this.updateStatus(); + log.debug("update", "Status: " + this.status); + if (this.status !== RUNNING) { + return exitCode; + } + + exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", [ "compose", "up", "-d", "--remove-orphans" ], this.path); + if (exitCode !== 0) { + throw new Error("Failed to restart, please check the terminal output for more information."); + } + return exitCode; + } + + checkRemoteChanges() { + return new Promise((resolve, reject) => { + if (!this.isGitRepo) { + reject("This stack is not a git repository"); + return; + } + //fetch remote changes and check if the current branch is behind + try { + const stdout = execSync("git fetch origin && git status -uno", { cwd: this.path }).toString(); + if (stdout.includes("Your branch is behind")) { + resolve(true); + } else { + resolve(false); + } + } catch (error) { + log.error("checkRemoteChanges", error); + reject("Failed to check local status"); + return; + } + }); + } + async joinCombinedTerminal(socket: DockgeSocket) { const terminalName = getCombinedTerminalName(socket.endpoint, this.name); const terminal = Terminal.getOrCreateTerminal(this.server, terminalName, "docker", [ "compose", "logs", "-f", "--tail", "100" ], this.path); diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 708dd4e..d93ecd4 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -17,6 +17,7 @@ declare module 'vue' { Confirm: typeof import('./src/components/Confirm.vue')['default'] Container: typeof import('./src/components/Container.vue')['default'] General: typeof import('./src/components/settings/General.vue')['default'] + GitOps: typeof import('./src/components/settings/GitOps.vue')['default'] HiddenInput: typeof import('./src/components/HiddenInput.vue')['default'] Login: typeof import('./src/components/Login.vue')['default'] NetworkInput: typeof import('./src/components/NetworkInput.vue')['default'] diff --git a/frontend/src/components/StackListItem.vue b/frontend/src/components/StackListItem.vue index 7e7561b..c6430c0 100644 --- a/frontend/src/components/StackListItem.vue +++ b/frontend/src/components/StackListItem.vue @@ -5,6 +5,9 @@ {{ stackName }}
{{ endpointDisplay }}
+
+ +
@@ -178,4 +181,8 @@ export default { opacity: 0.5; } +.icon-container { + margin-left: auto; +} + diff --git a/frontend/src/components/settings/GitOps.vue b/frontend/src/components/settings/GitOps.vue new file mode 100644 index 0000000..f0decca --- /dev/null +++ b/frontend/src/components/settings/GitOps.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/frontend/src/icon.ts b/frontend/src/icon.ts index 0599e6a..0ab17d6 100644 --- a/frontend/src/icon.ts +++ b/frontend/src/icon.ts @@ -54,6 +54,8 @@ import { faTerminal, faWarehouse, faHome, faRocket, faRotate, faCloudArrowDown, faArrowsRotate, + faCodeBranch, + faFileCode, } from "@fortawesome/free-solid-svg-icons"; library.add( @@ -109,6 +111,8 @@ library.add( faRotate, faCloudArrowDown, faArrowsRotate, + faCodeBranch, + faFileCode, ); export { FontAwesomeIcon }; diff --git a/frontend/src/lang/en.json b/frontend/src/lang/en.json index 0636226..678cf02 100644 --- a/frontend/src/lang/en.json +++ b/frontend/src/lang/en.json @@ -128,5 +128,15 @@ "New Container Name...": "New Container Name...", "Network name...": "Network name...", "Select a network...": "Select a network...", - "NoNetworksAvailable": "No networks available. You need to add internal networks or enable external networks in the right side first." -} + "NoNetworksAvailable": "No networks available. You need to add internal networks or enable external networks in the right side first.", + "repositoryUrl": "Repository URL", + "branch": "Branch", + "gitAutoUpdate": "[GitOps] Auto Update", + "enableAutoUpdate": "Check periodically for updates", + "ManageWithGit": "Manage this stack with Git", + "webhook": "Webhook URL to trigger update", + "copy": "Copy", + "GitOps": "GitOps", + "GitConfig": "Git Configuration", + "gitSync": "Sync Repo" +} \ No newline at end of file diff --git a/frontend/src/pages/Compose.vue b/frontend/src/pages/Compose.vue index 5c632c9..63c7e49 100644 --- a/frontend/src/pages/Compose.vue +++ b/frontend/src/pages/Compose.vue @@ -16,7 +16,7 @@ {{ $t("deployStack") }} - @@ -41,6 +41,11 @@ {{ $t("updateStack") }} + + + + -

{{ $tc("container", 2) }}

+
+

{{ $tc("container", 2) }}

-
- - +
+ + +
+
+ + +
+ +
+ +
-
- -
- - - + -
+

{{ $t("extra") }}

@@ -162,7 +245,7 @@ >
-
+

{{ stack.composeFileName }}

@@ -545,45 +628,59 @@ export default { deployStack() { this.processing = true; - - if (!this.jsonConfig.services) { - this.$root.toastError("No services found in compose.yaml"); - this.processing = false; - return; - } - - // Check if services is object - if (typeof this.jsonConfig.services !== "object") { - this.$root.toastError("Services must be an object"); - this.processing = false; - return; - } - - let serviceNameList = Object.keys(this.jsonConfig.services); - - // Set the stack name if empty, use the first container name - if (!this.stack.name && serviceNameList.length > 0) { - let serviceName = serviceNameList[0]; - let service = this.jsonConfig.services[serviceName]; - - if (service && service.container_name) { - this.stack.name = service.container_name; - } else { - this.stack.name = serviceName; - } - } - this.bindTerminal(); - this.$root.emitAgent(this.stack.endpoint, "deployStack", this.stack.name, this.stack.composeYAML, this.stack.composeENV, this.isAdd, (res) => { - this.processing = false; - this.$root.toastRes(res); + if (this.stack.isGitRepo) { + this.$root.emitAgent(this.stack.endpoint, "gitDeployStack", this.stack.name, this.stack.gitUrl, this.stack.branch, this.isAdd, (res) => { + this.processing = false; + this.$root.toastRes(res); - if (res.ok) { - this.isEditMode = false; - this.$router.push(this.url); + if (res.ok) { + this.isEditMode = false; + this.$router.push(this.url); + } + + }); + + } else { + if (!this.jsonConfig.services) { + this.$root.toastError("No services found in compose.yaml"); + this.processing = false; + return; } - }); + + // Check if services is object + if (typeof this.jsonConfig.services !== "object") { + this.$root.toastError("Services must be an object"); + this.processing = false; + return; + } + + let serviceNameList = Object.keys(this.jsonConfig.services); + + // Set the stack name if empty, use the first container name + if (!this.stack.name && serviceNameList.length > 0) { + let serviceName = serviceNameList[0]; + let service = this.jsonConfig.services[serviceName]; + + if (service && service.container_name) { + this.stack.name = service.container_name; + } else { + this.stack.name = serviceName; + } + } + + this.$root.emitAgent(this.stack.endpoint, "deployStack", this.stack.name, this.stack.composeYAML, this.stack.composeENV, this.isAdd, (res) => { + this.processing = false; + this.$root.toastRes(res); + + if (res.ok) { + this.isEditMode = false; + this.$router.push(this.url); + } + }); + } + }, saveStack() { @@ -645,6 +742,15 @@ export default { }); }, + gitSync() { + this.processing = true; + + this.$root.emitAgent(this.endpoint, "gitSync", this.stack.name, (res) => { + this.processing = false; + this.$root.toastRes(res); + }); + }, + deleteDialog() { this.$root.emitAgent(this.endpoint, "deleteStack", this.stack.name, (res) => { this.$root.toastRes(res); @@ -786,6 +892,19 @@ export default { this.stack.name = this.stack?.name?.toLowerCase(); }, + async copyWebhookToClipboard() { + try { + await navigator.clipboard.writeText(this.stack.webhook); + } catch (err) { + this.$root.toastError("Failed to copy to clipboard"); + } + this.$root.toastSuccess("Copied to clipboard"); + }, + + selectText(event) { + event.target.select(); + }, + } }; diff --git a/frontend/src/pages/Settings.vue b/frontend/src/pages/Settings.vue index 82431be..9f58ce8 100644 --- a/frontend/src/pages/Settings.vue +++ b/frontend/src/pages/Settings.vue @@ -80,6 +80,9 @@ export default { appearance: { title: this.$t("Appearance"), }, + gitOps: { + title: this.$t("GitOps"), + }, security: { title: this.$t("Security"), }, diff --git a/frontend/src/router.ts b/frontend/src/router.ts index f3db7a6..0efa3fb 100644 --- a/frontend/src/router.ts +++ b/frontend/src/router.ts @@ -15,6 +15,7 @@ import Appearance from "./components/settings/Appearance.vue"; import General from "./components/settings/General.vue"; const Security = () => import("./components/settings/Security.vue"); import About from "./components/settings/About.vue"; +import GitOps from "./components/settings/GitOps.vue"; const routes = [ { @@ -74,6 +75,10 @@ const routes = [ path: "appearance", component: Appearance, }, + { + path: "gitops", + component: GitOps, + }, { path: "security", component: Security, @@ -81,7 +86,7 @@ const routes = [ { path: "about", component: About, - }, + } ] }, ] diff --git a/package.json b/package.json index c7e401d..1fbb704 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "express": "~4.21.1", "express-static-gzip": "~2.1.8", "http-graceful-shutdown": "~3.1.13", + "ini": "^4.1.2", "jsonwebtoken": "~9.0.2", "jwt-decode": "~3.1.2", "knex": "~2.5.1", @@ -70,6 +71,7 @@ "@types/express": "~4.17.21", "@types/jsonwebtoken": "~9.0.7", "@types/semver": "^7.5.8", + "@types/ini": "^4.1.0", "@typescript-eslint/eslint-plugin": "~6.8.0", "@typescript-eslint/parser": "~6.8.0", "@vitejs/plugin-vue": "~4.5.2", @@ -98,4 +100,4 @@ "wait-on": "^7.2.0", "xterm-addon-web-links": "~0.9.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 795a2d0..10445f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,6 +50,9 @@ importers: http-graceful-shutdown: specifier: ~3.1.13 version: 3.1.13 + ini: + specifier: ^4.1.2 + version: 4.1.3 jsonwebtoken: specifier: ~9.0.2 version: 9.0.2 @@ -58,28 +61,28 @@ importers: version: 3.1.2 knex: specifier: ~2.5.1 - version: 2.5.1(mysql2@3.11.3) + version: 2.5.1(mysql2@3.11.4) limiter-es6-compat: specifier: ~2.1.2 version: 2.1.2 mysql2: specifier: ~3.11.3 - version: 3.11.3 + version: 3.11.4 promisify-child-process: specifier: ~4.1.2 version: 4.1.2 redbean-node: specifier: ~0.3.3 - version: 0.3.3(mysql2@3.11.3) + version: 0.3.3(mysql2@3.11.4) semver: specifier: ^7.6.3 version: 7.6.3 socket.io: specifier: ~4.8.0 - version: 4.8.0 + version: 4.8.1 socket.io-client: specifier: ~4.8.0 - version: 4.8.0 + version: 4.8.1 timezones-list: specifier: ~3.0.3 version: 3.0.3 @@ -113,7 +116,7 @@ importers: version: 6.4.2 '@fortawesome/vue-fontawesome': specifier: 3.0.3 - version: 3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.5.12(typescript@5.2.2)) + version: 3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.5.13(typescript@5.2.2)) '@types/bcryptjs': specifier: ^2.4.6 version: 2.4.6 @@ -126,6 +129,9 @@ importers: '@types/express': specifier: ~4.17.21 version: 4.17.21 + '@types/ini': + specifier: ^4.1.0 + version: 4.1.1 '@types/jsonwebtoken': specifier: ~9.0.7 version: 9.0.7 @@ -140,19 +146,19 @@ importers: version: 6.8.0(eslint@8.50.0)(typescript@5.2.2) '@vitejs/plugin-vue': specifier: ~4.5.2 - version: 4.5.2(vite@5.4.8(@types/node@22.7.5)(sass@1.68.0))(vue@3.5.12(typescript@5.2.2)) + version: 4.5.2(vite@5.4.11(@types/node@22.9.0)(sass@1.68.0))(vue@3.5.13(typescript@5.2.2)) '@xterm/addon-fit': specifier: beta - version: 0.11.0-beta.66(@xterm/xterm@5.6.0-beta.66) + version: 0.11.0-beta.70(@xterm/xterm@5.6.0-beta.70) '@xterm/xterm': specifier: beta - version: 5.6.0-beta.66 + version: 5.6.0-beta.70 bootstrap: specifier: 5.3.2 version: 5.3.2(@popperjs/core@2.11.8) bootstrap-vue-next: specifier: ~0.14.10 - version: 0.14.10(vue@3.5.12(typescript@5.2.2)) + version: 0.14.10(vue@3.5.13(typescript@5.2.2)) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -179,34 +185,34 @@ importers: version: 5.2.2 unplugin-vue-components: specifier: ~0.25.2 - version: 0.25.2(@babel/parser@7.25.8)(rollup@4.24.0)(vue@3.5.12(typescript@5.2.2)) + version: 0.25.2(@babel/parser@7.26.2)(rollup@4.27.2)(vue@3.5.13(typescript@5.2.2)) vite: specifier: ~5.4.8 - version: 5.4.8(@types/node@22.7.5)(sass@1.68.0) + version: 5.4.11(@types/node@22.9.0)(sass@1.68.0) vite-plugin-compression: specifier: ~0.5.1 - version: 0.5.1(vite@5.4.8(@types/node@22.7.5)(sass@1.68.0)) + version: 0.5.1(vite@5.4.11(@types/node@22.9.0)(sass@1.68.0)) vue: specifier: ~3.5.12 - version: 3.5.12(typescript@5.2.2) + version: 3.5.13(typescript@5.2.2) vue-eslint-parser: specifier: ~9.3.2 version: 9.3.2(eslint@8.50.0) vue-i18n: specifier: ~9.5.0 - version: 9.5.0(vue@3.5.12(typescript@5.2.2)) + version: 9.5.0(vue@3.5.13(typescript@5.2.2)) vue-prism-editor: specifier: 2.0.0-alpha.2 - version: 2.0.0-alpha.2(vue@3.5.12(typescript@5.2.2)) + version: 2.0.0-alpha.2(vue@3.5.13(typescript@5.2.2)) vue-qrcode: specifier: ~2.2.2 - version: 2.2.2(qrcode@1.5.4)(vue@3.5.12(typescript@5.2.2)) + version: 2.2.2(qrcode@1.5.4)(vue@3.5.13(typescript@5.2.2)) vue-router: specifier: ~4.2.5 - version: 4.2.5(vue@3.5.12(typescript@5.2.2)) + version: 4.2.5(vue@3.5.13(typescript@5.2.2)) vue-toastification: specifier: 2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.12(typescript@5.2.2)) + version: 2.0.0-rc.5(vue@3.5.13(typescript@5.2.2)) wait-on: specifier: ^7.2.0 version: 7.2.0 @@ -225,25 +231,25 @@ packages: '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} '@colors/colors@1.5.0': @@ -524,14 +530,14 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -549,8 +555,8 @@ packages: '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} - '@floating-ui/dom@1.6.11': - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} @@ -714,8 +720,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rollup/pluginutils@5.1.2': - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -723,83 +729,93 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + '@rollup/rollup-android-arm-eabi@4.27.2': + resolution: {integrity: sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + '@rollup/rollup-android-arm64@4.27.2': + resolution: {integrity: sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + '@rollup/rollup-darwin-arm64@4.27.2': + resolution: {integrity: sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + '@rollup/rollup-darwin-x64@4.27.2': + resolution: {integrity: sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + '@rollup/rollup-freebsd-arm64@4.27.2': + resolution: {integrity: sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.2': + resolution: {integrity: sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': + resolution: {integrity: sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + '@rollup/rollup-linux-arm-musleabihf@4.27.2': + resolution: {integrity: sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + '@rollup/rollup-linux-arm64-gnu@4.27.2': + resolution: {integrity: sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + '@rollup/rollup-linux-arm64-musl@4.27.2': + resolution: {integrity: sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': + resolution: {integrity: sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + '@rollup/rollup-linux-riscv64-gnu@4.27.2': + resolution: {integrity: sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + '@rollup/rollup-linux-s390x-gnu@4.27.2': + resolution: {integrity: sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + '@rollup/rollup-linux-x64-gnu@4.27.2': + resolution: {integrity: sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + '@rollup/rollup-linux-x64-musl@4.27.2': + resolution: {integrity: sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + '@rollup/rollup-win32-arm64-msvc@4.27.2': + resolution: {integrity: sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + '@rollup/rollup-win32-ia32-msvc@4.27.2': + resolution: {integrity: sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + '@rollup/rollup-win32-x64-msvc@4.27.2': + resolution: {integrity: sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA==} cpu: [x64] os: [win32] @@ -852,6 +868,9 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/ini@4.1.1': + resolution: {integrity: sha512-MIyNUZipBTbyUNnhvuXJTY7B6qNI78meck9Jbv3wk0OgNwRyOOVEKDutAkOs1snB/tx0FafyR6/SN4Ps0hZPeg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -864,11 +883,11 @@ packages: '@types/node@20.3.3': resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} - '@types/qs@6.9.16': - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + '@types/qs@6.9.17': + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -950,37 +969,37 @@ packages: vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 - '@vue/compiler-core@3.5.12': - resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - '@vue/compiler-dom@3.5.12': - resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - '@vue/compiler-sfc@3.5.12': - resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - '@vue/compiler-ssr@3.5.12': - resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/reactivity@3.5.12': - resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} - '@vue/runtime-core@3.5.12': - resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} - '@vue/runtime-dom@3.5.12': - resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==} + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} - '@vue/server-renderer@3.5.12': - resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==} + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} peerDependencies: - vue: 3.5.12 + vue: 3.5.13 - '@vue/shared@3.5.12': - resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} @@ -991,13 +1010,13 @@ packages: '@vueuse/shared@10.11.1': resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - '@xterm/addon-fit@0.11.0-beta.66': - resolution: {integrity: sha512-KdfnxQSFxQbfnfYW+TjB4132rZmO8WiHbVrYe9MgolU3UiWTFIJYyWJVReLIcX6bOHnw2QWqFovilBEoU28V5g==} + '@xterm/addon-fit@0.11.0-beta.70': + resolution: {integrity: sha512-oNYiGBsa3OPveytJX3JGP07uqUm+D84F8YcMHnoV5ADPdWKO/2kbrWSzHSXNmKb01qqLqgDCss4T07koAeFNAA==} peerDependencies: - '@xterm/xterm': ^5.6.0-beta.66 + '@xterm/xterm': ^5.6.0-beta.70 - '@xterm/xterm@5.6.0-beta.66': - resolution: {integrity: sha512-hmvS0e4sa6xBmeKIwxZE+RDTKpeLqJ3VSOlMUzvi5utV3xa7gwt5M60eRlSn+0qi8cRMuUCTvJhDFW1pP62+lw==} + '@xterm/xterm@5.6.0-beta.70': + resolution: {integrity: sha512-qviQMVWhRtgPn4z8PHNH6D/ffSKkNBHmUX1HyJxl325QM2xF8M8met83uFv7JZm7a5OQYScnLGsFAoTreSgdew==} abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -1011,8 +1030,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -1336,8 +1355,8 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} engines: {node: '>= 8'} cssesc@3.0.0: @@ -1490,8 +1509,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - engine.io-client@6.6.1: - resolution: {integrity: sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==} + engine.io-client@6.6.2: + resolution: {integrity: sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} @@ -1512,8 +1531,8 @@ packages: err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + es-abstract@1.23.5: + resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -1915,6 +1934,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -2324,8 +2347,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mysql2@3.11.3: - resolution: {integrity: sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==} + mysql2@3.11.4: + resolution: {integrity: sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==} engines: {node: '>= 8.0'} named-placeholders@1.1.3: @@ -2350,8 +2373,12 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - node-abi@3.68.0: - resolution: {integrity: sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} node-addon-api@4.3.0: @@ -2396,8 +2423,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -2483,13 +2510,17 @@ packages: pg-connection-string@2.6.1: resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -2502,8 +2533,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.2: @@ -2634,8 +2665,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + rollup@4.27.2: + resolution: {integrity: sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2741,16 +2772,16 @@ packages: socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} - socket.io-client@4.8.0: - resolution: {integrity: sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==} + socket.io-client@4.8.1: + resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} engines: {node: '>=10.0.0'} socket.io-parser@4.2.4: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} - socket.io@4.8.0: - resolution: {integrity: sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==} + socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} engines: {node: '>=10.2.0'} socks-proxy-agent@6.2.1: @@ -2885,10 +2916,6 @@ packages: timezones-list@3.0.3: resolution: {integrity: sha512-C+Vdvvj2c1xB6pu81pOX8geo6mrk/QsudFVlTVQET7QQwu8WAIyhDNeCrK5grU7EMzmbKLWqz7uU6dN8fvQvPQ==} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2904,8 +2931,8 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -2914,8 +2941,8 @@ packages: resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} hasBin: true - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsx@4.6.2: resolution: {integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==} @@ -3014,14 +3041,9 @@ packages: '@nuxt/kit': optional: true - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} engines: {node: '>=14.0.0'} - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3042,8 +3064,8 @@ packages: peerDependencies: vite: '>=2.0.0' - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3118,8 +3140,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue@3.5.12: - resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3197,8 +3219,8 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - xmlhttprequest-ssl@2.1.1: - resolution: {integrity: sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==} + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} xterm-addon-web-links@0.9.0: @@ -3268,23 +3290,22 @@ snapshots: '@antfu/utils@0.7.10': {} - '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.25.8': + '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 - '@babel/runtime@7.25.7': + '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/types@7.25.8': + '@babel/types@7.26.0': dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 '@colors/colors@1.5.0': optional: true @@ -3430,12 +3451,12 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.50.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@8.50.0)': dependencies: eslint: 8.50.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/eslintrc@2.1.4': dependencies: @@ -3459,18 +3480,18 @@ snapshots: dependencies: '@floating-ui/utils': 0.2.8 - '@floating-ui/dom@1.6.11': + '@floating-ui/dom@1.6.12': dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 '@floating-ui/utils@0.2.8': {} - '@floating-ui/vue@1.1.5(vue@3.5.12(typescript@5.2.2))': + '@floating-ui/vue@1.1.5(vue@3.5.13(typescript@5.2.2))': dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.6.12 '@floating-ui/utils': 0.2.8 - vue-demi: 0.14.10(vue@3.5.12(typescript@5.2.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.2.2)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -3491,10 +3512,10 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 6.4.2 - '@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.5.12(typescript@5.2.2))': + '@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.5.13(typescript@5.2.2))': dependencies: '@fortawesome/fontawesome-svg-core': 6.4.2 - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) '@gar/promisify@1.1.3': optional: true @@ -3667,60 +3688,66 @@ snapshots: '@popperjs/core@2.11.8': {} - '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + '@rollup/pluginutils@5.1.3(rollup@4.27.2)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.27.2 - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm-eabi@4.27.2': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-android-arm64@4.27.2': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.27.2': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-darwin-x64@4.27.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-arm64@4.27.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-freebsd-x64@4.27.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.27.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.27.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.27.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.27.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.27.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.27.2': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.27.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.27.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-linux-x64-musl@4.27.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.2': optional: true '@sideway/address@4.1.5': @@ -3741,7 +3768,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/bootstrap@5.2.10': dependencies: @@ -3751,20 +3778,20 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/estree@1.0.6': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.7.5 - '@types/qs': 6.9.16 + '@types/node': 22.9.0 + '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3772,26 +3799,28 @@ snapshots: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.16 + '@types/qs': 6.9.17 '@types/serve-static': 1.15.7 '@types/http-errors@2.0.4': {} + '@types/ini@4.1.1': {} + '@types/json-schema@7.0.15': {} '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/mime@1.3.5': {} '@types/node@20.3.3': {} - '@types/node@22.7.5': + '@types/node@22.9.0': dependencies: undici-types: 6.19.8 - '@types/qs@6.9.16': {} + '@types/qs@6.9.17': {} '@types/range-parser@1.2.7': {} @@ -3800,19 +3829,19 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.7.5 + '@types/node': 22.9.0 '@types/send': 0.17.4 '@types/web-bluetooth@0.0.20': {} '@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2)': dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 6.8.0(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/type-utils': 6.8.0(eslint@8.50.0)(typescript@5.2.2) @@ -3824,7 +3853,7 @@ snapshots: ignore: 5.3.2 natural-compare: 1.4.0 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.2.2) + ts-api-utils: 1.4.0(typescript@5.2.2) optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -3854,7 +3883,7 @@ snapshots: '@typescript-eslint/utils': 6.8.0(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.7 eslint: 8.50.0 - ts-api-utils: 1.3.0(typescript@5.2.2) + ts-api-utils: 1.4.0(typescript@5.2.2) optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -3870,7 +3899,7 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.2.2) + ts-api-utils: 1.4.0(typescript@5.2.2) optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -3878,7 +3907,7 @@ snapshots: '@typescript-eslint/utils@6.8.0(eslint@8.50.0)(typescript@5.2.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.50.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.8.0 @@ -3895,91 +3924,91 @@ snapshots: '@typescript-eslint/types': 6.8.0 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@4.5.2(vite@5.4.8(@types/node@22.7.5)(sass@1.68.0))(vue@3.5.12(typescript@5.2.2))': + '@vitejs/plugin-vue@4.5.2(vite@5.4.11(@types/node@22.9.0)(sass@1.68.0))(vue@3.5.13(typescript@5.2.2))': dependencies: - vite: 5.4.8(@types/node@22.7.5)(sass@1.68.0) - vue: 3.5.12(typescript@5.2.2) + vite: 5.4.11(@types/node@22.9.0)(sass@1.68.0) + vue: 3.5.13(typescript@5.2.2) - '@vue/compiler-core@3.5.12': + '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.25.8 - '@vue/shared': 3.5.12 + '@babel/parser': 7.26.2 + '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.12': + '@vue/compiler-dom@3.5.13': dependencies: - '@vue/compiler-core': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/compiler-sfc@3.5.12': + '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.25.8 - '@vue/compiler-core': 3.5.12 - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 + '@babel/parser': 7.26.2 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.12 - postcss: 8.4.47 + postcss: 8.4.49 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.12': + '@vue/compiler-ssr@3.5.13': dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 '@vue/devtools-api@6.6.4': {} - '@vue/reactivity@3.5.12': + '@vue/reactivity@3.5.13': dependencies: - '@vue/shared': 3.5.12 + '@vue/shared': 3.5.13 - '@vue/runtime-core@3.5.12': + '@vue/runtime-core@3.5.13': dependencies: - '@vue/reactivity': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/runtime-dom@3.5.12': + '@vue/runtime-dom@3.5.13': dependencies: - '@vue/reactivity': 3.5.12 - '@vue/runtime-core': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.2.2))': + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.2.2))': dependencies: - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 - vue: 3.5.12(typescript@5.2.2) + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.2.2) - '@vue/shared@3.5.12': {} + '@vue/shared@3.5.13': {} - '@vueuse/core@10.11.1(vue@3.5.12(typescript@5.2.2))': + '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.2.2))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.12(typescript@5.2.2)) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.2.2)) + '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.2.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.2.2)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@10.11.1': {} - '@vueuse/shared@10.11.1(vue@3.5.12(typescript@5.2.2))': + '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.2.2))': dependencies: - vue-demi: 0.14.10(vue@3.5.12(typescript@5.2.2)) + vue-demi: 0.14.10(vue@3.5.13(typescript@5.2.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@xterm/addon-fit@0.11.0-beta.66(@xterm/xterm@5.6.0-beta.66)': + '@xterm/addon-fit@0.11.0-beta.70(@xterm/xterm@5.6.0-beta.70)': dependencies: - '@xterm/xterm': 5.6.0-beta.66 + '@xterm/xterm': 5.6.0-beta.70 - '@xterm/xterm@5.6.0-beta.66': {} + '@xterm/xterm@5.6.0-beta.70': {} abbrev@1.1.1: {} @@ -3988,11 +4017,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn@8.12.1: {} + acorn@8.14.0: {} agent-base@6.0.2: dependencies: @@ -4076,7 +4105,7 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -4137,11 +4166,11 @@ snapshots: boolbase@1.0.0: {} - bootstrap-vue-next@0.14.10(vue@3.5.12(typescript@5.2.2)): + bootstrap-vue-next@0.14.10(vue@3.5.13(typescript@5.2.2)): dependencies: - '@floating-ui/vue': 1.1.5(vue@3.5.12(typescript@5.2.2)) - '@vueuse/core': 10.11.1(vue@3.5.12(typescript@5.2.2)) - vue: 3.5.12(typescript@5.2.2) + '@floating-ui/vue': 1.1.5(vue@3.5.13(typescript@5.2.2)) + '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.2.2)) + vue: 3.5.13(typescript@5.2.2) transitivePeerDependencies: - '@vue/composition-api' @@ -4350,9 +4379,9 @@ snapshots: cross-env@7.0.3: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 - cross-spawn@7.0.3: + cross-spawn@7.0.5: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -4382,7 +4411,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dayjs@1.11.13: {} @@ -4473,13 +4502,13 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.1: + engine.io-client@6.6.2: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 engine.io-parser: 5.2.3 ws: 8.17.1 - xmlhttprequest-ssl: 2.1.1 + xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil - supports-color @@ -4491,7 +4520,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.7.5 + '@types/node': 22.9.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -4512,7 +4541,7 @@ snapshots: err-code@2.0.3: optional: true - es-abstract@1.23.3: + es-abstract@1.23.5: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4545,7 +4574,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.2 + object-inspect: 1.13.3 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.3 @@ -4661,7 +4690,7 @@ snapshots: eslint-plugin-vue@9.17.0(eslint@8.50.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.50.0) eslint: 8.50.0 natural-compare: 1.4.0 nth-check: 2.1.1 @@ -4681,8 +4710,8 @@ snapshots: eslint@8.50.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@8.50.0) + '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.14 @@ -4690,7 +4719,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 debug: 4.3.7 doctrine: 3.0.0 escape-string-regexp: 4.0.0 @@ -4725,8 +4754,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 esquery@1.6.0: @@ -4857,7 +4886,7 @@ snapshots: foreground-child@3.3.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 signal-exit: 4.1.0 form-data@4.0.1: @@ -4893,7 +4922,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -5109,6 +5138,8 @@ snapshots: ini@1.3.8: {} + ini@4.1.3: {} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -5286,7 +5317,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - knex@2.4.2(mysql2@3.11.3): + knex@2.4.2(mysql2@3.11.4): dependencies: colorette: 2.0.19 commander: 9.5.0 @@ -5303,11 +5334,11 @@ snapshots: tarn: 3.0.2 tildify: 2.0.0 optionalDependencies: - mysql2: 3.11.3 + mysql2: 3.11.4 transitivePeerDependencies: - supports-color - knex@2.5.1(mysql2@3.11.3): + knex@2.5.1(mysql2@3.11.4): dependencies: colorette: 2.0.19 commander: 10.0.1 @@ -5324,7 +5355,7 @@ snapshots: tarn: 3.0.2 tildify: 2.0.0 optionalDependencies: - mysql2: 3.11.3 + mysql2: 3.11.4 transitivePeerDependencies: - supports-color @@ -5406,7 +5437,7 @@ snapshots: minipass-fetch: 1.4.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.3 + negotiator: 0.6.4 promise-retry: 2.0.1 socks-proxy-agent: 6.2.1 ssri: 8.0.1 @@ -5502,7 +5533,7 @@ snapshots: ms@2.1.3: {} - mysql2@3.11.3: + mysql2@3.11.4: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 @@ -5528,7 +5559,10 @@ snapshots: negotiator@0.6.3: {} - node-abi@3.68.0: + negotiator@0.6.4: + optional: true + + node-abi@3.71.0: dependencies: semver: 7.6.3 @@ -5584,7 +5618,7 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.2: {} + object-inspect@1.13.3: {} object-keys@1.1.1: {} @@ -5662,10 +5696,12 @@ snapshots: pg-connection-string@2.6.1: {} - picocolors@1.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} + picomatch@4.0.2: {} + pngjs@5.0.0: {} possible-typed-array-names@1.0.0: {} @@ -5675,10 +5711,10 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 prebuild-install@7.1.2: @@ -5689,7 +5725,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.68.0 + node-abi: 3.71.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -5767,13 +5803,13 @@ snapshots: dependencies: resolve: 1.22.8 - redbean-node@0.3.3(mysql2@3.11.3): + redbean-node@0.3.3(mysql2@3.11.4): dependencies: '@types/node': 20.3.3 await-lock: 2.2.2 dayjs: 1.11.13 glob: 10.3.16 - knex: 2.4.2(mysql2@3.11.3) + knex: 2.4.2(mysql2@3.11.4) lodash: 4.17.21 transitivePeerDependencies: - better-sqlite3 @@ -5821,26 +5857,28 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.24.0: + rollup@4.27.2: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.27.2 + '@rollup/rollup-android-arm64': 4.27.2 + '@rollup/rollup-darwin-arm64': 4.27.2 + '@rollup/rollup-darwin-x64': 4.27.2 + '@rollup/rollup-freebsd-arm64': 4.27.2 + '@rollup/rollup-freebsd-x64': 4.27.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.2 + '@rollup/rollup-linux-arm-musleabihf': 4.27.2 + '@rollup/rollup-linux-arm64-gnu': 4.27.2 + '@rollup/rollup-linux-arm64-musl': 4.27.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.2 + '@rollup/rollup-linux-riscv64-gnu': 4.27.2 + '@rollup/rollup-linux-s390x-gnu': 4.27.2 + '@rollup/rollup-linux-x64-gnu': 4.27.2 + '@rollup/rollup-linux-x64-musl': 4.27.2 + '@rollup/rollup-win32-arm64-msvc': 4.27.2 + '@rollup/rollup-win32-ia32-msvc': 4.27.2 + '@rollup/rollup-win32-x64-msvc': 4.27.2 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5849,7 +5887,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 safe-array-concat@1.1.2: dependencies: @@ -5940,7 +5978,7 @@ snapshots: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.3 signal-exit@3.0.7: {} @@ -5970,11 +6008,11 @@ snapshots: - supports-color - utf-8-validate - socket.io-client@4.8.0: + socket.io-client@4.8.1: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 - engine.io-client: 6.6.1 + engine.io-client: 6.6.2 socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -5988,7 +6026,7 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io@4.8.0: + socket.io@4.8.1: dependencies: accepts: 1.3.8 base64id: 2.0.0 @@ -6062,7 +6100,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 @@ -6077,7 +6115,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-object-atoms: 1.0.0 string.prototype.trimend@1.0.8: @@ -6161,8 +6199,6 @@ snapshots: timezones-list@3.0.3: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -6173,7 +6209,7 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@1.3.0(typescript@5.2.2): + ts-api-utils@1.4.0(typescript@5.2.2): dependencies: typescript: 5.2.2 @@ -6184,7 +6220,7 @@ snapshots: command-line-usage: 6.1.3 string-format: 2.0.0 - tslib@2.7.0: {} + tslib@2.8.1: {} tsx@4.6.2: dependencies: @@ -6279,10 +6315,10 @@ snapshots: unpipe@1.0.0: {} - unplugin-vue-components@0.25.2(@babel/parser@7.25.8)(rollup@4.24.0)(vue@3.5.12(typescript@5.2.2)): + unplugin-vue-components@0.25.2(@babel/parser@7.26.2)(rollup@4.27.2)(vue@3.5.13(typescript@5.2.2)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.3(rollup@4.27.2) chokidar: 3.6.0 debug: 4.3.7 fast-glob: 3.3.2 @@ -6290,18 +6326,17 @@ snapshots: magic-string: 0.30.12 minimatch: 9.0.5 resolve: 1.22.8 - unplugin: 1.14.1 - vue: 3.5.12(typescript@5.2.2) + unplugin: 1.16.0 + vue: 3.5.13(typescript@5.2.2) optionalDependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.26.2 transitivePeerDependencies: - rollup - supports-color - - webpack-sources - unplugin@1.14.1: + unplugin@1.16.0: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 webpack-virtual-modules: 0.6.2 uri-js@4.4.1: @@ -6314,28 +6349,28 @@ snapshots: vary@1.1.2: {} - vite-plugin-compression@0.5.1(vite@5.4.8(@types/node@22.7.5)(sass@1.68.0)): + vite-plugin-compression@0.5.1(vite@5.4.11(@types/node@22.9.0)(sass@1.68.0)): dependencies: chalk: 4.1.2 debug: 4.3.7 fs-extra: 10.1.0 - vite: 5.4.8(@types/node@22.7.5)(sass@1.68.0) + vite: 5.4.11(@types/node@22.9.0)(sass@1.68.0) transitivePeerDependencies: - supports-color - vite@5.4.8(@types/node@22.7.5)(sass@1.68.0): + vite@5.4.11(@types/node@22.9.0)(sass@1.68.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.0 + postcss: 8.4.49 + rollup: 4.27.2 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.9.0 fsevents: 2.3.3 sass: 1.68.0 - vue-demi@0.14.10(vue@3.5.12(typescript@5.2.2)): + vue-demi@0.14.10(vue@3.5.13(typescript@5.2.2)): dependencies: - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) vue-eslint-parser@9.3.2(eslint@8.50.0): dependencies: @@ -6350,39 +6385,39 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@9.5.0(vue@3.5.12(typescript@5.2.2)): + vue-i18n@9.5.0(vue@3.5.13(typescript@5.2.2)): dependencies: '@intlify/core-base': 9.5.0 '@intlify/shared': 9.5.0 '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) - vue-prism-editor@2.0.0-alpha.2(vue@3.5.12(typescript@5.2.2)): + vue-prism-editor@2.0.0-alpha.2(vue@3.5.13(typescript@5.2.2)): dependencies: - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) - vue-qrcode@2.2.2(qrcode@1.5.4)(vue@3.5.12(typescript@5.2.2)): + vue-qrcode@2.2.2(qrcode@1.5.4)(vue@3.5.13(typescript@5.2.2)): dependencies: qrcode: 1.5.4 - tslib: 2.7.0 - vue: 3.5.12(typescript@5.2.2) + tslib: 2.8.1 + vue: 3.5.13(typescript@5.2.2) - vue-router@4.2.5(vue@3.5.12(typescript@5.2.2)): + vue-router@4.2.5(vue@3.5.13(typescript@5.2.2)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) - vue-toastification@2.0.0-rc.5(vue@3.5.12(typescript@5.2.2)): + vue-toastification@2.0.0-rc.5(vue@3.5.13(typescript@5.2.2)): dependencies: - vue: 3.5.12(typescript@5.2.2) + vue: 3.5.13(typescript@5.2.2) - vue@3.5.12(typescript@5.2.2): + vue@3.5.13(typescript@5.2.2): dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-sfc': 3.5.12 - '@vue/runtime-dom': 3.5.12 - '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.2.2)) - '@vue/shared': 3.5.12 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.2.2)) + '@vue/shared': 3.5.13 optionalDependencies: typescript: 5.2.2 @@ -6462,7 +6497,7 @@ snapshots: xml-name-validator@4.0.0: {} - xmlhttprequest-ssl@2.1.1: {} + xmlhttprequest-ssl@2.1.2: {} xterm-addon-web-links@0.9.0(xterm@5.3.0): dependencies: