This commit is contained in:
Louis Lam 2023-11-07 20:47:16 +08:00
parent 7a63d59ef8
commit 015e4c21f9
12 changed files with 374 additions and 246 deletions

View file

@ -10,19 +10,19 @@ A fancy, easy-to-use and reactive docker `compose.yaml` stack manager.
## ⭐ Features
- Focus on `compose.yaml` stack management
- Interactive editor for `compose.yaml`
- Interactive web terminal for containers and docker commands
- Manage `compose.yaml`
- Interactive Editor for `compose.yaml`
- Interactive Web Terminal
- Reactive
- Everything is just responsive. Progress and terminal output are in real-time
- Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time
- Easy-to-use & fancy UI
- If you love Uptime Kuma's UI/UX, you will love this too
- Convert `docker run ...` command into `compose.yaml` file
- Convert `docker run ...` commands into `compose.yaml`
## 🔧 How to Install
1. Create a directory `./dockge/`
1. Create a `compose.yaml` file inside `./dockge` with the following content:
1. Create a directory `dockge`
1. Create a `compose.yaml` file inside `dockge` with the following content:
```yaml
version: "3.8"

View file

@ -27,7 +27,7 @@ import path from "path";
import { TerminalSocketHandler } from "./socket-handlers/terminal-socket-handler";
import { Stack } from "./stack";
import { Cron } from "croner";
import childProcess from "child_process";
import gracefulShutdown from "http-graceful-shutdown";
export class DockgeServer {
app : Express;
@ -260,6 +260,16 @@ export class DockgeServer {
});
});
gracefulShutdown(this.httpServer, {
signals: "SIGINT SIGTERM",
timeout: 30000, // timeout: 30 secs
development: false, // not in dev mode
forceExit: true, // triggers process.exit() at the end of shutdown process
onShutdown: this.shutdownFunction, // shutdown function (async) - e.g. for cleanup DB, ...
finally: this.finalFunction, // finally function (sync) - e.g. for logging
});
}
/**
@ -280,12 +290,12 @@ export class DockgeServer {
}
socket.emit("info", {
versionProperty,
latestVersionProperty,
version: versionProperty,
latestVersion: latestVersionProperty,
isContainer,
primaryBaseURL: await Settings.get("primaryBaseURL"),
serverTimezone: await this.getTimezone(),
serverTimezoneOffset: this.getTimezoneOffset(),
//primaryBaseURL: await Settings.get("primaryBaseURL"),
//serverTimezone: await this.getTimezone(),
//serverTimezoneOffset: this.getTimezoneOffset(),
});
}
@ -472,4 +482,26 @@ export class DockgeServer {
get stackDirFullPath() {
return path.resolve(this.stacksDir);
}
/**
* Shutdown the application
* Stops all monitors and closes the database connection.
* @param signal The signal that triggered this function to be called.
*/
async shutdownFunction(signal : string | undefined) {
log.info("server", "Shutdown requested");
log.info("server", "Called signal: " + signal);
// TODO: Close all terminals?
await Database.close();
Settings.stopCacheCleaner();
}
/**
* Final function called before application exits
*/
finalFunction() {
log.info("server", "Graceful shutdown successful!");
}
}

View file

@ -6,9 +6,10 @@ import { R } from "redbean-node";
import { loginRateLimiter, twoFaRateLimiter } from "../rate-limiter";
import { generatePasswordHash, needRehashPassword, shake256, SHAKE256_LENGTH, verifyPassword } from "../password-hash";
import { User } from "../models/user";
import { DockgeSocket } from "../util-server";
import { checkLogin, DockgeSocket, doubleCheckPassword } from "../util-server";
import { passwordStrength } from "check-password-strength";
import jwt from "jsonwebtoken";
import { Settings } from "../settings";
export class MainSocketHandler extends SocketHandler {
create(socket : DockgeSocket, server : DockgeServer) {
@ -187,12 +188,63 @@ export class MainSocketHandler extends SocketHandler {
}
});
socket.on("getSettings", async (callback) => {
try {
checkLogin(socket);
const data = await Settings.getSettings("general");
callback({
ok: true,
data: data,
});
} catch (e) {
callback({
ok: false,
msg: e.message,
});
}
});
socket.on("setSettings", async (data, currentPassword, callback) => {
try {
checkLogin(socket);
// If currently is disabled auth, don't need to check
// Disabled Auth + Want to Disable Auth => No Check
// Disabled Auth + Want to Enable Auth => No Check
// Enabled Auth + Want to Disable Auth => Check!!
// Enabled Auth + Want to Enable Auth => No Check
const currentDisabledAuth = await Settings.get("disableAuth");
if (!currentDisabledAuth && data.disableAuth) {
await doubleCheckPassword(socket, currentPassword);
}
await Settings.setSettings("general", data);
callback({
ok: true,
msg: "Saved"
});
server.sendInfo(socket);
} catch (e) {
callback({
ok: false,
msg: e.message,
});
}
});
}
async afterLogin(server: DockgeServer, socket : DockgeSocket, user : User) {
socket.userID = user.id;
socket.join(user.id.toString());
server.sendInfo(socket);
try {
server.sendStackList(socket);
} catch (e) {

View file

@ -198,6 +198,13 @@ export class Stack {
let composeList = JSON.parse(res.toString());
for (let composeStack of composeList) {
// Skip the dockge stack
// TODO: Could be self managed?
if (composeStack.Name === "dockge") {
continue;
}
let stack = stackList.get(composeStack.Name);
// This stack probably is not managed by Dockge, but we still want to show it

View file

@ -3,6 +3,8 @@ import { Terminal } from "./terminal";
import { randomBytes } from "crypto";
import { log } from "./log";
import { ERROR_TYPE_VALIDATION } from "./util-common";
import { R } from "redbean-node";
import { verifyPassword } from "./password-hash";
export interface DockgeSocket extends Socket {
userID: number;
@ -57,3 +59,19 @@ export function callbackError(error : unknown, callback : unknown) {
log.debug("console", "Unknown error: " + error);
}
}
export async function doubleCheckPassword(socket : DockgeSocket, currentPassword : unknown) {
if (typeof currentPassword !== "string") {
throw new Error("Wrong data type?");
}
let user = await R.findOne("user", " id = ? AND active = 1 ", [
socket.userID,
]);
if (!user || !verifyPassword(currentPassword, user.password)) {
throw new Error("Incorrect current password");
}
return user;
}

View file

@ -12,7 +12,7 @@
</div>
<div class="col-5">
<div class="function">
<router-link v-if="!isEditMode" class="btn btn-normal" :to="terminalRouteLink">
<router-link v-if="!isEditMode" class="btn btn-normal" :to="terminalRouteLink" disabled="">
<font-awesome-icon icon="terminal" />
Bash
</router-link>

View file

@ -41,5 +41,7 @@
"addListItem": "Add {0}",
"deleteContainer": "Delete",
"addContainer": "Add Container",
"addNetwork": "Add Network"
"addNetwork": "Add Network",
"disableauth.message1": "Are you sure want to <strong>disable authentication</strong>?",
"disableauth.message2": "It is designed for scenarios <strong>where you intend to implement third-party authentication</strong> in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms."
}

View file

@ -39,11 +39,41 @@ export default defineComponent({
return "🐻";
}
},
/**
* Frontend Version
* It should be compiled to a static value while building the frontend.
* Please see ./frontend/vite.config.ts, it is defined via vite.js
* @returns {string}
*/
frontendVersion() {
// eslint-disable-next-line no-undef
return FRONTEND_VERSION;
},
/**
* Are both frontend and backend in the same version?
* @returns {boolean}
*/
isFrontendBackendVersionMatched() {
if (!this.info.version) {
return true;
}
return this.info.version === this.frontendVersion;
},
},
watch: {
remember() {
localStorage.remember = (this.remember) ? "1" : "0";
},
// Reload the SPA if the server version is changed.
"info.version"(to, from) {
if (from && from !== to) {
window.location.reload();
}
},
},
created() {
this.initSocketIO();
@ -247,6 +277,7 @@ export default defineComponent({
unbindTerminal(terminalName : string) {
terminalMap.delete(terminalName);
}
},
}
});

View file

@ -117,39 +117,9 @@ export default {
loadSettings() {
this.$root.getSocket().emit("getSettings", (res) => {
this.settings = res.data;
if (this.settings.checkUpdate === undefined) {
this.settings.checkUpdate = true;
}
if (this.settings.searchEngineIndex === undefined) {
this.settings.searchEngineIndex = false;
}
if (this.settings.entryPage === undefined) {
this.settings.entryPage = "dashboard";
}
if (this.settings.nscd === undefined) {
this.settings.nscd = true;
}
if (this.settings.dnsCache === undefined) {
this.settings.dnsCache = false;
}
if (this.settings.keepDataPeriodDays === undefined) {
this.settings.keepDataPeriodDays = 180;
}
if (this.settings.tlsExpiryNotifyDays === undefined) {
this.settings.tlsExpiryNotifyDays = [ 7, 14, 21 ];
}
if (this.settings.trustProxy === undefined) {
this.settings.trustProxy = false;
}
this.settingsLoaded = true;
});
},

View file

@ -12,6 +12,9 @@ export default defineConfig({
server: {
port: 5000,
},
define: {
"FRONTEND_VERSION": JSON.stringify(process.env.npm_package_version),
},
root: "./frontend",
build: {
outDir: "../frontend-dist",

View file

@ -16,22 +16,23 @@
"mark-as-nightly": "tsx ./extra/mark-as-nightly.ts"
},
"dependencies": {
"@homebridge/node-pty-prebuilt-multiarch": "~0.11.7",
"@homebridge/node-pty-prebuilt-multiarch": "~0.11.10",
"@louislam/sqlite3": "~15.1.6",
"bcryptjs": "~2.4.3",
"check-password-strength": "~2.0.7",
"command-exists": "^1.2.9",
"command-exists": "~1.2.9",
"compare-versions": "~6.1.0",
"composerize": "^1.4.1",
"croner": "^7.0.4",
"dayjs": "^1.11.10",
"composerize": "~1.4.1",
"croner": "~7.0.4",
"dayjs": "~1.11.10",
"express": "~4.18.2",
"express-static-gzip": "~2.1.7",
"http-graceful-shutdown": "~3.1.13",
"jsonwebtoken": "~9.0.2",
"jwt-decode": "~3.1.2",
"knex": "~2.5.1",
"limiter-es6-compat": "~2.1.2",
"mysql2": "^3.6.2",
"mysql2": "^3.6.3",
"redbean-node": "0.3.1",
"socket.io": "~4.7.2",
"socket.io-client": "~4.7.2",
@ -39,7 +40,7 @@
"ts-command-line-args": "~2.5.1",
"tsx": "~3.14.0",
"type-fest": "~4.3.3",
"yaml": "~2.3.3"
"yaml": "~2.3.4"
},
"optionalDependencies": {
"pm2": "~5.3.0"
@ -50,8 +51,8 @@
"@fortawesome/free-solid-svg-icons": "6.4.2",
"@fortawesome/vue-fontawesome": "3.0.3",
"@types/bootstrap": "^5.2.8",
"@types/command-exists": "~1.2.2",
"@types/express": "~4.17.20",
"@types/command-exists": "~1.2.3",
"@types/express": "~4.17.21",
"@types/jsonwebtoken": "~9.0.4",
"@typescript-eslint/eslint-plugin": "~6.8.0",
"@typescript-eslint/parser": "~6.8.0",
@ -70,13 +71,13 @@
"unplugin-vue-components": "^0.25.2",
"vite": "~4.5.0",
"vite-plugin-compression": "^0.5.1",
"vue": "~3.3.6",
"vue": "~3.3.8",
"vue-eslint-parser": "^9.3.2",
"vue-i18n": "~9.5.0",
"vue-prism-editor": "~2.0.0-alpha.2",
"vue-prism-editor": "2.0.0-alpha.2",
"vue-qrcode": "^2.2.0",
"vue-router": "~4.2.5",
"vue-toastification": "~2.0.0-rc.5",
"vue-toastification": "2.0.0-rc.5",
"xterm": "~5.3.0",
"xterm-addon-web-links": "~0.9.0"
}

View file

@ -6,8 +6,8 @@ settings:
dependencies:
'@homebridge/node-pty-prebuilt-multiarch':
specifier: ~0.11.7
version: 0.11.7
specifier: ~0.11.10
version: 0.11.10
'@louislam/sqlite3':
specifier: ~15.1.6
version: 15.1.6
@ -18,19 +18,19 @@ dependencies:
specifier: ~2.0.7
version: 2.0.7
command-exists:
specifier: ^1.2.9
specifier: ~1.2.9
version: 1.2.9
compare-versions:
specifier: ~6.1.0
version: 6.1.0
composerize:
specifier: ^1.4.1
specifier: ~1.4.1
version: 1.4.1
croner:
specifier: ^7.0.4
specifier: ~7.0.4
version: 7.0.4
dayjs:
specifier: ^1.11.10
specifier: ~1.11.10
version: 1.11.10
express:
specifier: ~4.18.2
@ -38,6 +38,9 @@ dependencies:
express-static-gzip:
specifier: ~2.1.7
version: 2.1.7
http-graceful-shutdown:
specifier: ~3.1.13
version: 3.1.13
jsonwebtoken:
specifier: ~9.0.2
version: 9.0.2
@ -46,16 +49,16 @@ dependencies:
version: 3.1.2
knex:
specifier: ~2.5.1
version: 2.5.1(mysql2@3.6.2)
version: 2.5.1(mysql2@3.6.3)
limiter-es6-compat:
specifier: ~2.1.2
version: 2.1.2
mysql2:
specifier: ^3.6.2
version: 3.6.2
specifier: ^3.6.3
version: 3.6.3
redbean-node:
specifier: 0.3.1
version: 0.3.1(mysql2@3.6.2)
version: 0.3.1(mysql2@3.6.3)
socket.io:
specifier: ~4.7.2
version: 4.7.2
@ -75,8 +78,8 @@ dependencies:
specifier: ~4.3.3
version: 4.3.3
yaml:
specifier: ~2.3.3
version: 2.3.3
specifier: ~2.3.4
version: 2.3.4
optionalDependencies:
pm2:
@ -95,16 +98,16 @@ devDependencies:
version: 6.4.2
'@fortawesome/vue-fontawesome':
specifier: 3.0.3
version: 3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.3.6)
version: 3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.3.8)
'@types/bootstrap':
specifier: ^5.2.8
version: 5.2.8
'@types/command-exists':
specifier: ~1.2.2
version: 1.2.2
specifier: ~1.2.3
version: 1.2.3
'@types/express':
specifier: ~4.17.20
version: 4.17.20
specifier: ~4.17.21
version: 4.17.21
'@types/jsonwebtoken':
specifier: ~9.0.4
version: 9.0.4
@ -116,13 +119,13 @@ devDependencies:
version: 6.8.0(eslint@8.50.0)(typescript@5.2.2)
'@vitejs/plugin-vue':
specifier: ~4.3.4
version: 4.3.4(vite@4.5.0)(vue@3.3.6)
version: 4.3.4(vite@4.5.0)(vue@3.3.8)
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.3.6)
version: 0.14.10(vue@3.3.8)
cross-env:
specifier: ~7.0.3
version: 7.0.3
@ -152,7 +155,7 @@ devDependencies:
version: 5.2.2
unplugin-vue-components:
specifier: ^0.25.2
version: 0.25.2(vue@3.3.6)
version: 0.25.2(vue@3.3.8)
vite:
specifier: ~4.5.0
version: 4.5.0(sass@1.68.0)
@ -160,26 +163,26 @@ devDependencies:
specifier: ^0.5.1
version: 0.5.1(vite@4.5.0)
vue:
specifier: ~3.3.6
version: 3.3.6(typescript@5.2.2)
specifier: ~3.3.8
version: 3.3.8(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.3.6)
version: 9.5.0(vue@3.3.8)
vue-prism-editor:
specifier: ~2.0.0-alpha.2
version: 2.0.0-alpha.2(vue@3.3.6)
specifier: 2.0.0-alpha.2
version: 2.0.0-alpha.2(vue@3.3.8)
vue-qrcode:
specifier: ^2.2.0
version: 2.2.0(qrcode@1.5.3)(vue@3.3.6)
version: 2.2.0(qrcode@1.5.3)(vue@3.3.8)
vue-router:
specifier: ~4.2.5
version: 4.2.5(vue@3.3.6)
version: 4.2.5(vue@3.3.8)
vue-toastification:
specifier: ~2.0.0-rc.5
version: 2.0.0-rc.5(vue@3.3.6)
specifier: 2.0.0-rc.5
version: 2.0.0-rc.5(vue@3.3.8)
xterm:
specifier: ~5.3.0
version: 5.3.0
@ -420,13 +423,13 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/regexpp@4.9.1:
resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==}
/@eslint-community/regexpp@4.10.0:
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
/@eslint/eslintrc@2.1.2:
resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
/@eslint/eslintrc@2.1.3:
resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
@ -464,11 +467,11 @@ packages:
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
dev: true
/@floating-ui/vue@1.0.2(vue@3.3.6):
/@floating-ui/vue@1.0.2(vue@3.3.8):
resolution: {integrity: sha512-sImlAl9mAoCKZLNlwWz2P2ZMJIDlOEDXrRD6aD2sIHAka1LPC+nWtB+D3lPe7IE7FGWSbwBPTnlSdlABa3Fr0A==}
dependencies:
'@floating-ui/dom': 1.5.3
vue-demi: 0.14.6(vue@3.3.6)
vue-demi: 0.14.6(vue@3.3.8)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -504,14 +507,14 @@ packages:
'@fortawesome/fontawesome-common-types': 6.4.2
dev: true
/@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.3.6):
/@fortawesome/vue-fontawesome@3.0.3(@fortawesome/fontawesome-svg-core@6.4.2)(vue@3.3.8):
resolution: {integrity: sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==}
peerDependencies:
'@fortawesome/fontawesome-svg-core': ~1 || ~6
vue: '>= 3.0.0 < 4'
dependencies:
'@fortawesome/fontawesome-svg-core': 6.4.2
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/@gar/promisify@1.1.3:
@ -520,8 +523,8 @@ packages:
dev: false
optional: true
/@homebridge/node-pty-prebuilt-multiarch@0.11.7:
resolution: {integrity: sha512-aaw66RDwHZ2Xs821U6hwEl2wPDyv9PAWEzNxS32YSRaoYmbie1AREehAfjbASGgpub+7d+3l98xft3oCCUKhSw==}
/@homebridge/node-pty-prebuilt-multiarch@0.11.10:
resolution: {integrity: sha512-ttOE8QQRq/aRXDoKD2rfYEF50AiDLM9LPTohqCog1Z78g8k3Zqk15R/EHfTl/8cfw4l0fxt3y0dWL56wq79p2A==}
requiresBuild: true
dependencies:
nan: 2.18.0
@ -709,7 +712,7 @@ packages:
resolution: {integrity: sha512-xkqqCoTf5VsciMqN0vb9jthW7olVAi4KRFNddCc7ZkeJZ3i8QwZANr4NSH2H5DvseRFHq7MiPspRY/EWAFWWTg==}
requiresBuild: true
dependencies:
async: 3.2.4
async: 3.2.5
chalk: 3.0.0
dayjs: 1.8.36
debug: 4.3.4
@ -789,7 +792,7 @@ packages:
rollup:
optional: true
dependencies:
'@types/estree': 1.0.3
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
dev: true
@ -811,11 +814,11 @@ packages:
dev: false
optional: true
/@types/body-parser@1.19.4:
resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==}
/@types/body-parser@1.19.5:
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
dependencies:
'@types/connect': 3.4.37
'@types/node': 20.8.7
'@types/connect': 3.4.38
'@types/node': 20.8.10
dev: true
/@types/bootstrap@5.2.8:
@ -824,44 +827,44 @@ packages:
'@popperjs/core': 2.11.8
dev: true
/@types/command-exists@1.2.2:
resolution: {integrity: sha512-1qKPTkjLmghE5C7UUHXGcLaG8MNftchOcLAIryUXNKahRO5beS+iJ9rIL8XD4+B8K2phjYUsPQDox1FRX4KMTQ==}
/@types/command-exists@1.2.3:
resolution: {integrity: sha512-PpbaE2XWLaWYboXD6k70TcXO/OdOyyRFq5TVpmlUELNxdkkmXU9fkImNosmXU1DtsNrqdUgWd/nJQYXgwmtdXQ==}
dev: true
/@types/connect@3.4.37:
resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==}
/@types/connect@3.4.38:
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
dependencies:
'@types/node': 20.8.7
'@types/node': 20.8.10
dev: true
/@types/cookie@0.4.1:
resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
dev: false
/@types/cors@2.8.15:
resolution: {integrity: sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==}
/@types/cors@2.8.16:
resolution: {integrity: sha512-Trx5or1Nyg1Fq138PCuWqoApzvoSLWzZ25ORBiHMbbUT42g578lH1GT4TwYDbiUOLFuDsCkfLneT2105fsFWGg==}
dependencies:
'@types/node': 20.8.7
'@types/node': 20.8.10
dev: false
/@types/estree@1.0.3:
resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==}
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
/@types/express-serve-static-core@4.17.39:
resolution: {integrity: sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==}
/@types/express-serve-static-core@4.17.41:
resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==}
dependencies:
'@types/node': 20.8.7
'@types/node': 20.8.10
'@types/qs': 6.9.9
'@types/range-parser': 1.2.6
'@types/send': 0.17.3
dev: true
/@types/express@4.17.20:
resolution: {integrity: sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==}
/@types/express@4.17.21:
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
dependencies:
'@types/body-parser': 1.19.4
'@types/express-serve-static-core': 4.17.39
'@types/body-parser': 1.19.5
'@types/express-serve-static-core': 4.17.41
'@types/qs': 6.9.9
'@types/serve-static': 1.15.4
dev: true
@ -877,7 +880,7 @@ packages:
/@types/jsonwebtoken@9.0.4:
resolution: {integrity: sha512-8UYapdmR0QlxgvJmyE8lP7guxD0UGVMfknsdtCFZh4ovShdBl3iOI4zdvqBHrB/IS+xUj3PSx73Qkey1fhWz+g==}
dependencies:
'@types/node': 20.8.7
'@types/node': 20.8.10
dev: true
/@types/mime@1.3.4:
@ -892,10 +895,10 @@ packages:
resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==}
dev: false
/@types/node@20.8.7:
resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==}
/@types/node@20.8.10:
resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==}
dependencies:
undici-types: 5.25.3
undici-types: 5.26.5
/@types/qs@6.9.9:
resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==}
@ -913,7 +916,7 @@ packages:
resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==}
dependencies:
'@types/mime': 1.3.4
'@types/node': 20.8.7
'@types/node': 20.8.10
dev: true
/@types/serve-static@1.15.4:
@ -921,7 +924,7 @@ packages:
dependencies:
'@types/http-errors': 2.0.3
'@types/mime': 3.0.3
'@types/node': 20.8.7
'@types/node': 20.8.10
dev: true
/@types/web-bluetooth@0.0.18:
@ -939,7 +942,7 @@ packages:
typescript:
optional: true
dependencies:
'@eslint-community/regexpp': 4.9.1
'@eslint-community/regexpp': 4.10.0
'@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)
@ -1059,7 +1062,7 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
/@vitejs/plugin-vue@4.3.4(vite@4.5.0)(vue@3.3.6):
/@vitejs/plugin-vue@4.3.4(vite@4.5.0)(vue@3.3.8):
resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@ -1067,103 +1070,103 @@ packages:
vue: ^3.2.25
dependencies:
vite: 4.5.0(sass@1.68.0)
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/@vue/compiler-core@3.3.6:
resolution: {integrity: sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA==}
/@vue/compiler-core@3.3.8:
resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==}
dependencies:
'@babel/parser': 7.23.0
'@vue/shared': 3.3.6
'@vue/shared': 3.3.8
estree-walker: 2.0.2
source-map-js: 1.0.2
dev: true
/@vue/compiler-dom@3.3.6:
resolution: {integrity: sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng==}
/@vue/compiler-dom@3.3.8:
resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==}
dependencies:
'@vue/compiler-core': 3.3.6
'@vue/shared': 3.3.6
'@vue/compiler-core': 3.3.8
'@vue/shared': 3.3.8
dev: true
/@vue/compiler-sfc@3.3.6:
resolution: {integrity: sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA==}
/@vue/compiler-sfc@3.3.8:
resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==}
dependencies:
'@babel/parser': 7.23.0
'@vue/compiler-core': 3.3.6
'@vue/compiler-dom': 3.3.6
'@vue/compiler-ssr': 3.3.6
'@vue/reactivity-transform': 3.3.6
'@vue/shared': 3.3.6
'@vue/compiler-core': 3.3.8
'@vue/compiler-dom': 3.3.8
'@vue/compiler-ssr': 3.3.8
'@vue/reactivity-transform': 3.3.8
'@vue/shared': 3.3.8
estree-walker: 2.0.2
magic-string: 0.30.5
postcss: 8.4.31
source-map-js: 1.0.2
dev: true
/@vue/compiler-ssr@3.3.6:
resolution: {integrity: sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w==}
/@vue/compiler-ssr@3.3.8:
resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==}
dependencies:
'@vue/compiler-dom': 3.3.6
'@vue/shared': 3.3.6
'@vue/compiler-dom': 3.3.8
'@vue/shared': 3.3.8
dev: true
/@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
dev: true
/@vue/reactivity-transform@3.3.6:
resolution: {integrity: sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng==}
/@vue/reactivity-transform@3.3.8:
resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==}
dependencies:
'@babel/parser': 7.23.0
'@vue/compiler-core': 3.3.6
'@vue/shared': 3.3.6
'@vue/compiler-core': 3.3.8
'@vue/shared': 3.3.8
estree-walker: 2.0.2
magic-string: 0.30.5
dev: true
/@vue/reactivity@3.3.6:
resolution: {integrity: sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q==}
/@vue/reactivity@3.3.8:
resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==}
dependencies:
'@vue/shared': 3.3.6
'@vue/shared': 3.3.8
dev: true
/@vue/runtime-core@3.3.6:
resolution: {integrity: sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA==}
/@vue/runtime-core@3.3.8:
resolution: {integrity: sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==}
dependencies:
'@vue/reactivity': 3.3.6
'@vue/shared': 3.3.6
'@vue/reactivity': 3.3.8
'@vue/shared': 3.3.8
dev: true
/@vue/runtime-dom@3.3.6:
resolution: {integrity: sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg==}
/@vue/runtime-dom@3.3.8:
resolution: {integrity: sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==}
dependencies:
'@vue/runtime-core': 3.3.6
'@vue/shared': 3.3.6
'@vue/runtime-core': 3.3.8
'@vue/shared': 3.3.8
csstype: 3.1.2
dev: true
/@vue/server-renderer@3.3.6(vue@3.3.6):
resolution: {integrity: sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw==}
/@vue/server-renderer@3.3.8(vue@3.3.8):
resolution: {integrity: sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==}
peerDependencies:
vue: 3.3.6
vue: 3.3.8
dependencies:
'@vue/compiler-ssr': 3.3.6
'@vue/shared': 3.3.6
vue: 3.3.6(typescript@5.2.2)
'@vue/compiler-ssr': 3.3.8
'@vue/shared': 3.3.8
vue: 3.3.8(typescript@5.2.2)
dev: true
/@vue/shared@3.3.6:
resolution: {integrity: sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ==}
/@vue/shared@3.3.8:
resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
dev: true
/@vueuse/core@10.5.0(vue@3.3.6):
/@vueuse/core@10.5.0(vue@3.3.8):
resolution: {integrity: sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==}
dependencies:
'@types/web-bluetooth': 0.0.18
'@vueuse/metadata': 10.5.0
'@vueuse/shared': 10.5.0(vue@3.3.6)
vue-demi: 0.14.6(vue@3.3.6)
'@vueuse/shared': 10.5.0(vue@3.3.8)
vue-demi: 0.14.6(vue@3.3.8)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -1173,10 +1176,10 @@ packages:
resolution: {integrity: sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==}
dev: true
/@vueuse/shared@10.5.0(vue@3.3.6):
/@vueuse/shared@10.5.0(vue@3.3.8):
resolution: {integrity: sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==}
dependencies:
vue-demi: 0.14.6(vue@3.3.6)
vue-demi: 0.14.6(vue@3.3.8)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -1195,16 +1198,16 @@ packages:
negotiator: 0.6.3
dev: false
/acorn-jsx@5.3.2(acorn@8.10.0):
/acorn-jsx@5.3.2(acorn@8.11.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.10.0
acorn: 8.11.2
dev: true
/acorn@8.10.0:
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
/acorn@8.11.2:
resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@ -1396,8 +1399,8 @@ packages:
dev: false
optional: true
/async@3.2.4:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
/async@3.2.5:
resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
requiresBuild: true
dev: false
optional: true
@ -1489,14 +1492,14 @@ packages:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
/bootstrap-vue-next@0.14.10(vue@3.3.6):
/bootstrap-vue-next@0.14.10(vue@3.3.8):
resolution: {integrity: sha512-0czOUVVi8nSA3M9dm48jJnMUB6vP7sYrMxfbFjINE/MEwVbsi4b1Gq41k6gFJcwE54fj7pYQW9q8LP5fqcq0Lw==}
peerDependencies:
vue: ^3.3.4
dependencies:
'@floating-ui/vue': 1.0.2(vue@3.3.6)
'@vueuse/core': 10.5.0(vue@3.3.6)
vue: 3.3.6(typescript@5.2.2)
'@floating-ui/vue': 1.0.2(vue@3.3.8)
'@vueuse/core': 10.5.0(vue@3.3.8)
vue: 3.3.8(typescript@5.2.2)
transitivePeerDependencies:
- '@vue/composition-api'
dev: true
@ -2082,8 +2085,8 @@ packages:
engines: {node: '>=10.2.0'}
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.15
'@types/node': 20.8.7
'@types/cors': 2.8.16
'@types/node': 20.8.10
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@ -2237,8 +2240,8 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
'@eslint-community/regexpp': 4.9.1
'@eslint/eslintrc': 2.1.2
'@eslint-community/regexpp': 4.10.0
'@eslint/eslintrc': 2.1.3
'@eslint/js': 8.50.0
'@humanwhocodes/config-array': 0.11.13
'@humanwhocodes/module-importer': 1.0.1
@ -2286,8 +2289,8 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.10.0
acorn-jsx: 5.3.2(acorn@8.10.0)
acorn: 8.11.2
acorn-jsx: 5.3.2(acorn@8.11.2)
eslint-visitor-keys: 3.4.3
dev: true
@ -2404,8 +2407,8 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
/fast-glob@3.3.1:
resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
/fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@ -2547,7 +2550,7 @@ packages:
dependencies:
graceful-fs: 4.2.11
jsonfile: 6.1.0
universalify: 2.0.0
universalify: 2.0.1
dev: true
/fs-extra@8.1.0:
@ -2734,7 +2737,7 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
fast-glob: 3.3.1
fast-glob: 3.3.2
ignore: 5.2.4
merge2: 1.4.1
slash: 3.0.0
@ -2805,6 +2808,15 @@ packages:
toidentifier: 1.0.1
dev: false
/http-graceful-shutdown@3.1.13:
resolution: {integrity: sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==}
engines: {node: '>=4.0.0'}
dependencies:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/http-proxy-agent@4.0.1:
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
engines: {node: '>= 6'}
@ -3081,7 +3093,7 @@ packages:
/jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
universalify: 2.0.0
universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
dev: true
@ -3131,7 +3143,7 @@ packages:
json-buffer: 3.0.1
dev: true
/knex@2.4.2(mysql2@3.6.2):
/knex@2.4.2(mysql2@3.6.3):
resolution: {integrity: sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==}
engines: {node: '>=12'}
hasBin: true
@ -3168,7 +3180,7 @@ packages:
getopts: 2.3.0
interpret: 2.2.0
lodash: 4.17.21
mysql2: 3.6.2
mysql2: 3.6.3
pg-connection-string: 2.5.0
rechoir: 0.8.0
resolve-from: 5.0.0
@ -3178,7 +3190,7 @@ packages:
- supports-color
dev: false
/knex@2.5.1(mysql2@3.6.2):
/knex@2.5.1(mysql2@3.6.3):
resolution: {integrity: sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==}
engines: {node: '>=12'}
hasBin: true
@ -3215,7 +3227,7 @@ packages:
getopts: 2.3.0
interpret: 2.2.0
lodash: 4.17.21
mysql2: 3.6.2
mysql2: 3.6.3
pg-connection-string: 2.6.1
rechoir: 0.8.0
resolve-from: 5.0.0
@ -3587,7 +3599,7 @@ packages:
vscode-languageserver-textdocument: 1.0.11
vscode-languageserver-types: 3.17.5
vscode-uri: 3.0.8
yaml: 2.3.3
yaml: 2.3.4
dev: true
/ms@2.0.0:
@ -3607,8 +3619,8 @@ packages:
dev: false
optional: true
/mysql2@3.6.2:
resolution: {integrity: sha512-m5erE6bMoWfPXW1D5UrVwlT8PowAoSX69KcZzPuARQ3wY1RJ52NW9PdvdPo076XiSIkQ5IBTis7hxdlrQTlyug==}
/mysql2@3.6.3:
resolution: {integrity: sha512-qYd/1CDuW1KYZjD4tzg2O8YS3X/UWuGH8ZMHyMeggMTXL3yOdMisbwZ5SNkHzDGlZXKYLAvV8tMrEH+NUMz3fw==}
engines: {node: '>= 8.0'}
dependencies:
denque: 2.1.0
@ -3632,8 +3644,8 @@ packages:
resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==}
dev: false
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
@ -4009,10 +4021,10 @@ packages:
resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==}
requiresBuild: true
dependencies:
async: 3.2.4
async: 3.2.5
debug: 4.3.4
pidusage: 2.0.21
systeminformation: 5.21.13
systeminformation: 5.21.15
tx2: 1.0.5
transitivePeerDependencies:
- supports-color
@ -4029,7 +4041,7 @@ packages:
'@pm2/io': 5.0.2
'@pm2/js-api': 0.6.7
'@pm2/pm2-version-check': 1.0.4
async: 3.2.4
async: 3.2.5
blessed: 0.1.81
chalk: 3.0.0
chokidar: 3.5.3
@ -4080,7 +4092,7 @@ packages:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.6
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
dev: true
@ -4188,8 +4200,8 @@ packages:
once: 1.4.0
dev: false
/punycode@2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
/punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
dev: true
@ -4271,14 +4283,14 @@ packages:
resolve: 1.22.8
dev: false
/redbean-node@0.3.1(mysql2@3.6.2):
/redbean-node@0.3.1(mysql2@3.6.3):
resolution: {integrity: sha512-rz71vF7UtJQ14ttZ9I0QuaJ9TOwBCnZb+qHUBiU05f2fLaiQC79liisL3xgkHI8uE9et6HAkG8Z8VPkZbhgxKw==}
dependencies:
'@types/node': 20.3.3
await-lock: 2.2.2
dayjs: 1.11.10
glob: 10.3.10
knex: 2.4.2(mysql2@3.6.2)
knex: 2.4.2(mysql2@3.6.3)
lodash: 4.17.21
transitivePeerDependencies:
- better-sqlite3
@ -4748,8 +4760,8 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
/systeminformation@5.21.13:
resolution: {integrity: sha512-sGgMhQxxjKHSIJtv7g5s19IRpfCgLG3tZqGbFcfGFyMm1hJ3BmzTfaq0yyOO2oLHlbkM49mgMjnPPB8g573LMA==}
/systeminformation@5.21.15:
resolution: {integrity: sha512-vMLwsGgJZW6GvoBXVWNZuRQG0MPxlfQnIIIY9ZxoogWftUpJ9C33qD+32e1meFlXuWpN0moNApPFLpbsSi4OaQ==}
engines: {node: '>=8.0.0'}
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
@ -4939,8 +4951,8 @@ packages:
engines: {node: '>=8'}
dev: false
/undici-types@5.25.3:
resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==}
/undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
/unique-filename@1.1.1:
resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
@ -4965,8 +4977,8 @@ packages:
dev: false
optional: true
/universalify@2.0.0:
resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
/universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
dev: true
@ -4975,7 +4987,7 @@ packages:
engines: {node: '>= 0.8'}
dev: false
/unplugin-vue-components@0.25.2(vue@3.3.6):
/unplugin-vue-components@0.25.2(vue@3.3.8):
resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==}
engines: {node: '>=14'}
peerDependencies:
@ -4992,13 +5004,13 @@ packages:
'@rollup/pluginutils': 5.0.5
chokidar: 3.5.3
debug: 4.3.4
fast-glob: 3.3.1
fast-glob: 3.3.2
local-pkg: 0.4.3
magic-string: 0.30.5
minimatch: 9.0.3
resolve: 1.22.8
unplugin: 1.5.0
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
transitivePeerDependencies:
- rollup
- supports-color
@ -5007,7 +5019,7 @@ packages:
/unplugin@1.5.0:
resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==}
dependencies:
acorn: 8.10.0
acorn: 8.11.2
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
@ -5016,7 +5028,7 @@ packages:
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.0
punycode: 2.3.1
dev: true
/util-deprecate@1.0.2:
@ -5125,7 +5137,7 @@ packages:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
dev: true
/vue-demi@0.14.6(vue@3.3.6):
/vue-demi@0.14.6(vue@3.3.8):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}
hasBin: true
@ -5137,7 +5149,7 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue-eslint-parser@9.3.2(eslint@8.50.0):
@ -5158,7 +5170,7 @@ packages:
- supports-color
dev: true
/vue-i18n@9.5.0(vue@3.3.6):
/vue-i18n@9.5.0(vue@3.3.8):
resolution: {integrity: sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg==}
engines: {node: '>= 16'}
peerDependencies:
@ -5167,19 +5179,19 @@ packages:
'@intlify/core-base': 9.5.0
'@intlify/shared': 9.5.0
'@vue/devtools-api': 6.5.1
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue-prism-editor@2.0.0-alpha.2(vue@3.3.6):
/vue-prism-editor@2.0.0-alpha.2(vue@3.3.8):
resolution: {integrity: sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==}
engines: {node: '>=10'}
peerDependencies:
vue: ^3.0.0
dependencies:
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue-qrcode@2.2.0(qrcode@1.5.3)(vue@3.3.6):
/vue-qrcode@2.2.0(qrcode@1.5.3)(vue@3.3.8):
resolution: {integrity: sha512-pEwy/IznxEY5MXptFLaxbGdeDWIJRgU5VhBcFmg1avDjD2z2jjWAGE5dlDwqagXtUjcgkvFSSQ40boog1maLuw==}
peerDependencies:
qrcode: ^1.5.0
@ -5187,39 +5199,39 @@ packages:
dependencies:
qrcode: 1.5.3
tslib: 2.6.2
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue-router@4.2.5(vue@3.3.6):
/vue-router@4.2.5(vue@3.3.8):
resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
peerDependencies:
vue: ^3.2.0
dependencies:
'@vue/devtools-api': 6.5.1
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue-toastification@2.0.0-rc.5(vue@3.3.6):
/vue-toastification@2.0.0-rc.5(vue@3.3.8):
resolution: {integrity: sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==}
peerDependencies:
vue: ^3.0.2
dependencies:
vue: 3.3.6(typescript@5.2.2)
vue: 3.3.8(typescript@5.2.2)
dev: true
/vue@3.3.6(typescript@5.2.2):
resolution: {integrity: sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg==}
/vue@3.3.8(typescript@5.2.2):
resolution: {integrity: sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@vue/compiler-dom': 3.3.6
'@vue/compiler-sfc': 3.3.6
'@vue/runtime-dom': 3.3.6
'@vue/server-renderer': 3.3.6(vue@3.3.6)
'@vue/shared': 3.3.6
'@vue/compiler-dom': 3.3.8
'@vue/compiler-sfc': 3.3.8
'@vue/runtime-dom': 3.3.8
'@vue/server-renderer': 3.3.8(vue@3.3.8)
'@vue/shared': 3.3.8
typescript: 5.2.2
dev: true
@ -5371,8 +5383,8 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
/yaml@2.3.3:
resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==}
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
/yamljs@0.3.0: