diff --git a/.forgejo/workflows/deploy-edge-proxy.yml b/.forgejo/workflows/deploy-edge-proxy.yml deleted file mode 100644 index 87125e3..0000000 --- a/.forgejo/workflows/deploy-edge-proxy.yml +++ /dev/null @@ -1,31 +0,0 @@ -# name: Deploy Edge Proxy -# run-name: ${{ gitea.actor }} Deploy Edge Proxy -# on: -# push: -# branches: [ master ] - -# env: -# GARDEN_DEPLOY_ACTION: minecluster-proxy - -# jobs: -# deploy-edge: -# steps: -# # Setup Oasis -# - name: Oasis Setup -# uses: https://gitea.dunemask.dev/elysium/elysium-actions@oasis-setup-auto -# with: -# deploy-env: edge -# infisical-token: ${{ secrets.INFISICAL_ELYSIUM_EDGE_READ_TOKEN }} -# # Deploy to Edge Cluster -# - name: Deploy to Edge Cluster -# run: garden deploy $GARDEN_DEPLOY_ACTION --force --force-build --env usw-edge -# working-directory: ${{ env.OASIS_WORKSPACE }} -# # Alert via Discord -# - name: Discord Alert -# if: always() -# uses: https://gitea.dunemask.dev/elysium/elysium-actions@discord-status -# with: -# status: ${{ job.status }} -# channel: deployments -# header: DEPLOY EDGE -# additional-content: "Minecluster Proxy" \ No newline at end of file diff --git a/.forgejo/workflows/deploy-edge.yml b/.forgejo/workflows/deploy-edge.yml deleted file mode 100644 index afb0c78..0000000 --- a/.forgejo/workflows/deploy-edge.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Deploy USW-MC -run-name: ${{ forgejo.actor }} Deploy USW-MC -on: - push: - branches: [master] - -env: - GARDEN_DEPLOY_ACTION: minecluster - -jobs: - deploy-edge: - steps: - # Configure proper kubeconfig (Used when cluster does not match the edge environment) - - name: Get usw-mc deployment kubeconfig - uses: https://forgejo.dunemask.dev/elysium/elysium-actions@infisical-env - with: - infisical-token: ${{ secrets.INFISICAL_ELYSIUM_EDGE_READ_TOKEN }} - project-id: ${{ vars.INFISICAL_DEPLOYMENTS_PROJECT_ID }} - secret-envs: edge - secret-paths: /kubernetes/usw-mc - # Setup Oasis - - name: Oasis Setup - uses: https://forgejo.dunemask.dev/elysium/elysium-actions@oasis-setup-auto - with: - deploy-env: edge - infisical-token: ${{ secrets.INFISICAL_ELYSIUM_EDGE_READ_TOKEN }} - infisical-project: ${{ vars.INFISICAL_DEPLOYMENTS_PROJECT_ID }} - extra-secret-paths: /dashboard - extra-secret-envs: edge - # Deploy to Edge - - name: Deploy to Edge env - run: garden deploy $GARDEN_DEPLOY_ACTION --force --force-build --env usw-edge - working-directory: ${{ env.OASIS_WORKSPACE }} - env: # (Used when cluster does not match the edge environment) - MCL_KUBECONFIG: ${{ env.KUBERNETES_CONFIG_USW_MC }} - # Alert via Discord - - name: Discord Alert - if: always() - uses: https://forgejo.dunemask.dev/elysium/elysium-actions@discord-status - with: - status: ${{ job.status }} - channel: deployments - header: DEPLOY MC - additional-content: "Minecluster Server Manager Deployment" diff --git a/.forgejo/workflows/qa-api-tests.yml b/.forgejo/workflows/qa-api-tests.yml deleted file mode 100644 index 596e11a..0000000 --- a/.forgejo/workflows/qa-api-tests.yml +++ /dev/null @@ -1,42 +0,0 @@ -# name: QA API Tests -# run-name: ${{ gitea.actor }} QA API Test -# on: -# pull_request: -# branches: [ master ] - -# env: -# REPO_DIR: ${{ gitea.workspace }}/minecluster -# GARDEN_LINK_ACTION: build.minecluster-image - -# jobs: -# qa-api-tests: -# steps: -# # Setup Oasis -# - name: Oasis Setup -# uses: https://gitea.dunemask.dev/elysium/elysium-actions@oasis-setup-auto -# with: -# deploy-env: ci -# infisical-token: ${{ secrets.INFISICAL_ELYSIUM_CI_READ_TOKEN }} -# # Test Code -# - name: Checkout repository -# uses: actions/checkout@v3 -# with: -# path: ${{ env.REPO_DIR }} -# # Garden link -# - name: Link Repo code to Garden -# run: garden link action $GARDEN_LINK_ACTION $REPO_DIR --env usw-ci --var cubit-projects=cairo,minecluster -# working-directory: ${{ env.OASIS_WORKSPACE }} -# # Cubit CI Tests -# - name: Run Cubit tests in CI env -# run: garden workflow qa-api-tests --env usw-ci --var ci-ttl=25m -# working-directory: ${{ env.OASIS_WORKSPACE }} -# # Discord Alert -# - name: Discord Alert -# if: always() -# uses: https://gitea.dunemask.dev/elysium/elysium-actions@discord-status -# with: -# status: ${{ job.status }} -# channel: ci -# header: QA API Tests -# additional-content: "CI Namespace: `${{env.CI_NAMESPACE}}`" - \ No newline at end of file diff --git a/.forgejo/workflows/s3-repo-backup.yml b/.forgejo/workflows/s3-repo-backup.yml deleted file mode 100644 index 4e4e7fd..0000000 --- a/.forgejo/workflows/s3-repo-backup.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: S3 Repo Backup -run-name: ${{ forgejo.actor }} S3 Repo Backup -on: - push: - branches: [ master ] - -jobs: - s3-repo-backup: - steps: - - name: S3 Backup - uses: https://forgejo.dunemask.dev/elysium/elysium-actions@s3-backup - with: - infisical-token: ${{ secrets.INFISICAL_ELYSIUM_EDGE_READ_TOKEN }} - infisical-project: ${{ vars.INFISICAL_DEPLOYMENTS_PROJECT_ID }} - - name: Status Alert - if: always() - run: echo "The Job ended with status ${{ job.status }}." diff --git a/.gitea/workflows/s3-repo-backup.yml b/.gitea/workflows/s3-repo-backup.yml new file mode 100644 index 0000000..68c426c --- /dev/null +++ b/.gitea/workflows/s3-repo-backup.yml @@ -0,0 +1,31 @@ +name: S3 Repo Backup +run-name: ${{ gitea.actor }} S3 Repo Backup +on: + push: + branches: [ master ] + +env: + S3_BACKUP_ENDPOINT: https://s3.dunemask.dev + S3_BACKUP_KEY_ID: gitea-repo-backup + S3_BACKUP_KEY: ${{ secrets.S3_REPO_BACKUP_KEY }} + REPO_DIR: ${{ gitea.workspace }}/${{ gitea.respository }} +jobs: + s3-repo-backup: + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + path: ${{ env.REPO_DIR }} + - name: S3 Backup + uses: peter-evans/s3-backup@v1 + env: + ACCESS_KEY_ID: ${{ env.S3_BACKUP_KEY_ID }} + SECRET_ACCESS_KEY: ${{ env.S3_BACKUP_KEY }} + MIRROR_SOURCE: ${{ env.REPO_DIR }} + MIRROR_TARGET: repository-backups/${{ gitea.repository }} + STORAGE_SERVICE_URL: ${{env.S3_BACKUP_ENDPOINT}} + with: + args: --overwrite --remove + - name: Status Alert + if: always() + run: echo "The Job ended with status ${{ job.status }}." diff --git a/.gitignore b/.gitignore index 5c86a6a..d570088 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules/ -.env diff --git a/dist/app.js b/dist/app.js index d87897e..2f46e88 100644 --- a/dist/app.js +++ b/dist/app.js @@ -8,4 +8,4 @@ const kc = new k8s.KubeConfig(); kc.loadFromDefault(); } -main().catch((e)=>{console.error(e)}); +main().catch((e)=>{console.log(e)}); diff --git a/index.html b/index.html index 4fadd4e..ce38114 100644 --- a/index.html +++ b/index.html @@ -4,15 +4,6 @@ - - - - - - - - - Minecluster diff --git a/lib/controllers/file-controller.js b/lib/controllers/file-controller.js index e5e7075..1a92c17 100644 --- a/lib/controllers/file-controller.js +++ b/lib/controllers/file-controller.js @@ -4,17 +4,13 @@ import { listServerFiles, removeServerItem, uploadServerItem, - moveServerItems, } from "../k8s/server-files.js"; import { sendError } from "../util/ExpressClientError.js"; -import { checkAuthorization } from "../database/queries/server-queries.js"; export async function listFiles(req, res) { const serverSpec = req.body; if (!serverSpec) return res.sendStatus(400); if (!serverSpec.id) return res.status(400).send("Server id missing!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); listServerFiles(serverSpec) .then((f) => { const fileData = f.map((fi, i) => ({ @@ -35,8 +31,6 @@ export async function createFolder(req, res) { if (!serverSpec) return res.sendStatus(400); if (!serverSpec.id) return res.status(400).send("Server id missing!"); if (!serverSpec.path) return res.status(400).send("Path required!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); createServerFolder(serverSpec) .then(() => res.sendStatus(200)) .catch(sendError(res)); @@ -49,8 +43,6 @@ export async function deleteItem(req, res) { if (!serverSpec.path) return res.status(400).send("Path required!"); if (serverSpec.isDir === undefined || serverSpec.isDir === null) return res.status(400).send("IsDIr required!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); removeServerItem(serverSpec) .then(() => res.sendStatus(200)) .catch(sendError(res)); @@ -60,8 +52,6 @@ export async function uploadItem(req, res) { const serverSpec = req.body; if (!serverSpec.id) return res.status(400).send("Server id missing!"); if (!serverSpec.path) return res.status(400).send("Path required!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); uploadServerItem(serverSpec, req.file) .then(() => res.sendStatus(200)) .catch(sendError(res)); @@ -71,8 +61,6 @@ export async function getItem(req, res) { const serverSpec = req.body; if (!serverSpec.id) return res.status(400).send("Server id missing!"); if (!serverSpec.path) return res.status(400).send("Path required!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); getServerItem(serverSpec, res) .then(({ ds, ftpTransfer }) => { ds.pipe(res).on("error", sendError(res)); @@ -80,18 +68,3 @@ export async function getItem(req, res) { }) .catch(sendError(res)); } - -export async function moveItems(req, res) { - const serverSpec = req.body; - if (!serverSpec.id) return res.status(400).send("Server id missing!"); - if (!serverSpec.destination) - return res.status(400).send("Destination required!"); - if (!serverSpec.origin) return res.status(400).send("Origin required!"); - if (!serverSpec.files || !Array.isArray(serverSpec.files)) - return res.status(400).send("Files required!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) return res.sendStatus(403); - moveServerItems(serverSpec) - .then(() => res.sendStatus(200)) - .catch(sendError(res)); -} diff --git a/lib/controllers/lifecycle-controller.js b/lib/controllers/lifecycle-controller.js index 1916157..5aa271d 100644 --- a/lib/controllers/lifecycle-controller.js +++ b/lib/controllers/lifecycle-controller.js @@ -8,9 +8,6 @@ import { } from "../database/queries/server-queries.js"; import ExpressClientError, { sendError } from "../util/ExpressClientError.js"; import { toggleServer } from "../k8s/k8s-server-control.js"; -import { checkAuthorization } from "../database/queries/server-queries.js"; -import { WARN } from "../util/logging.js"; -import modifyServerResources from "../k8s/server-modify.js"; const dnsRegex = new RegExp( `^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$`, @@ -18,14 +15,8 @@ const dnsRegex = new RegExp( function backupPayloadFilter(req, res) { const serverSpec = req.body; - const { - storage, - backupHost, - backupBucket, - backupId, - backupKey, - backupInterval, - } = serverSpec; + const { backupHost, backupBucket, backupId, backupKey, backupInterval } = + serverSpec; // TODO: Impliment non creation time backups if ( !!backupHost || @@ -34,8 +25,6 @@ function backupPayloadFilter(req, res) { !!backupKey || !!backupInterval ) { - if (storage === 0) - return res.status(400).send("Backups cannot be used if storage is zero!"); // If any keys are required, all are required if ( !( @@ -71,19 +60,13 @@ function payloadFilter(req, res) { return res .status(400) .send("Extra ports must be a list of strings with length of 5!"); - if (host !== host.toLowerCase()) - WARN("CREATE", "Host automatically being lowercasified..."); - req.body.host = host.toLowerCase(); return "filtered"; } -async function checkServerId(cairoId, serverSpec) { +function checkServerId(serverSpec) { if (!serverSpec) throw new ExpressClientError({ c: 400 }); if (!serverSpec.id) throw new ExpressClientError({ c: 400, m: "Server id missing!" }); - const authorized = await checkAuthorization(serverSpec.id, cairoId); - if (!authorized) - throw new ExpressClientError({ c: 403, m: "Access forbidden!" }); } export async function createServer(req, res) { @@ -91,9 +74,9 @@ export async function createServer(req, res) { if (backupPayloadFilter(req, res) !== "filtered") return; const serverSpec = req.body; try { - const serverEntry = await createServerEntry(req.cairoId, serverSpec); + const serverEntry = await createServerEntry(serverSpec); await createServerResources(serverEntry); - res.json(serverEntry); + res.sendStatus(200); } catch (e) { sendError(res)(e); } @@ -103,7 +86,7 @@ export async function deleteServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { - await checkServerId(req.cairoId, serverSpec); + checkServerId(serverSpec); } catch (e) { return sendError(res)(e); } @@ -118,7 +101,7 @@ export async function startServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { - await checkServerId(req.cairoId, serverSpec); + checkServerId(serverSpec); } catch (e) { return sendError(res)(e); } @@ -132,7 +115,7 @@ export async function stopServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { - await checkServerId(req.cairoId, serverSpec); + checkServerId(serverSpec); } catch (e) { return sendError(res)(e); } @@ -146,7 +129,7 @@ export async function getServer(req, res) { // Ensure spec is safe const serverSpec = req.body; try { - await checkServerId(req.cairoId, serverSpec); + checkServerId(serverSpec); } catch (e) { return sendError(res)(e); } @@ -163,15 +146,10 @@ export async function getServer(req, res) { export async function modifyServer(req, res) { if (payloadFilter(req, res) !== "filtered") return; const serverSpec = req.body; - if (!!serverSpec.host) - WARN( - "MODIFY", - "Warning, hostname changing is not implimented yet! Please ask the developer if you'd like to see this added!", - ); try { - await checkServerId(req.cairoId, serverSpec); + checkServerId(serverSpec); const serverEntry = await modifyServerEntry(serverSpec); - await modifyServerResources(serverEntry); + // await createServerResources(serverEntry); res.sendStatus(200); } catch (e) { sendError(res)(e); diff --git a/lib/controllers/s3-controller.js b/lib/controllers/s3-controller.js deleted file mode 100644 index 43c6f7d..0000000 --- a/lib/controllers/s3-controller.js +++ /dev/null @@ -1,84 +0,0 @@ -import { S3, GetObjectCommand } from "@aws-sdk/client-s3"; -import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; -import { basename } from "node:path"; -import { getServerEntry } from "../database/queries/server-queries.js"; -import { ERR } from "../util/logging.js"; -import { checkAuthorization } from "../database/queries/server-queries.js"; -const s3Region = "us-east-1"; - -async function getS3BackupData(serverId) { - const serverEntry = await getServerEntry(serverId); - if (!serverEntry?.backupHost) return undefined; - const s3Config = { - credentials: { - accessKeyId: serverEntry.backupId, - secretAccessKey: serverEntry.backupKey, - }, - endpoint: `https://${serverEntry.backupHost}`, - forcePathStyle: true, - region: s3Region, - }; - const pathParts = serverEntry.backupPath.split("/"); - if (pathParts[0] === "") pathParts.shift(); - const bucket = pathParts.shift(); - const backupPrefix = pathParts.join("/"); - return { s3Config, bucket, backupPrefix }; -} - -export async function listS3Backups(req, res) { - const serverSpec = req.body; - if (!serverSpec.id) return res.status(400).send("Server id missing!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) - return res - .status(403) - .send("You do not have permission to access that server!"); - const s3Data = await getS3BackupData(serverSpec.id); - if (!s3Data) return res.status(409).send("Backup not configured!"); - const { s3Config, bucket, backupPrefix } = s3Data; - const s3Client = new S3(s3Config); - try { - const listResponse = await s3Client.listObjectsV2({ - Bucket: bucket, - Prefix: backupPrefix, - }); - const files = - listResponse.Contents?.map((f) => ({ - name: basename(f.Key), - lastModified: f.LastModified, - path: f.Key, - size: f.Size, - })) ?? []; - res.json(files); - } catch (e) { - ERR("S3", e); - res.sendStatus(500); - } -} - -export async function getS3BackupUrl(req, res) { - const serverSpec = req.body; - if (!serverSpec.id) return res.status(400).send("Server id missing!"); - if (!serverSpec.backupPath) - return res.status(400).send("Backup path missing!"); - const authorized = await checkAuthorization(serverSpec.id, req.cairoId); - if (!authorized) - return res - .status(403) - .send("You do not have permission to access that server!"); - const s3Data = await getS3BackupData(serverSpec.id); - if (!s3Data) return res.status(409).send("Backup not configured!"); - const { s3Config, bucket } = s3Data; - const s3Client = new S3(s3Config); - try { - const command = new GetObjectCommand({ - Bucket: bucket, - Key: serverSpec.backupPath, - }); - const url = await getSignedUrl(s3Client, command, { expiresIn: 3600 }); - res.json({ url }); - } catch (e) { - ERR("S3", e); - res.sendStatus(500); - } -} diff --git a/lib/controllers/status-controller.js b/lib/controllers/status-controller.js index a36a53b..cd5ff57 100644 --- a/lib/controllers/status-controller.js +++ b/lib/controllers/status-controller.js @@ -1,9 +1,9 @@ -import { getUserDeployments } from "../k8s/k8s-server-control.js"; +import { getDeployments } from "../k8s/k8s-server-control.js"; import { getInstances } from "../k8s/server-status.js"; import { sendError } from "../util/ExpressClientError.js"; export function serverList(req, res) { - getUserDeployments(req.cairoId) + getDeployments() .then((sd) => res.json(sd.map((s) => s.metadata.name.substring(4)))) .catch((e) => { ERR("STATUS CONTROLLER", e); @@ -12,7 +12,7 @@ export function serverList(req, res) { } export function serverInstances(req, res) { - getInstances(req.cairoId) + getInstances() .then((i) => res.json(i)) .catch(sendError(res)); } diff --git a/lib/controllers/sub-controllers/console-controller.js b/lib/controllers/sub-controllers/console-controller.js index b272f03..264146a 100644 --- a/lib/controllers/sub-controllers/console-controller.js +++ b/lib/controllers/sub-controllers/console-controller.js @@ -4,9 +4,10 @@ import { Rcon as RconClient } from "rcon-client"; import stream from "stream"; import { ERR, WARN } from "../../util/logging.js"; import { getServerEntry } from "../../database/queries/server-queries.js"; -import kc from "../../k8s/k8s-config.js"; -// Kubernetes Configuration +// Kubernetes Configuration +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); const namespace = process.env.MCL_SERVER_NAMESPACE; @@ -26,13 +27,9 @@ export async function webConsoleLogs(socket) { const log = new k8s.Log(kc); const logStream = new stream.PassThrough(); - var logstreamBuffer = ""; - logStream.on("data", (chunk) => { - const bufferString = Buffer.from(chunk).toString(); - if (!bufferString.includes("\n")) return (logstreamBuffer += bufferString); - const clientChunks = `${logstreamBuffer}${bufferString}`.split("\n"); - for (var c of clientChunks) socket.emit("push", c); - }); + logStream.on("data", (chunk) => + socket.emit("push", Buffer.from(chunk).toString()), + ); log .log(namespace, mcsPods[0], containerName, logStream, { follow: true, diff --git a/lib/database/migrations/1_create_servers_table.sql b/lib/database/migrations/1_create_servers_table.sql index 6386fc5..3ef14ee 100644 --- a/lib/database/migrations/1_create_servers_table.sql +++ b/lib/database/migrations/1_create_servers_table.sql @@ -1,14 +1,12 @@ CREATE SEQUENCE servers_id_seq; CREATE TABLE servers ( id bigint NOT NULL DEFAULT nextval('servers_id_seq') PRIMARY KEY, - owner_cairo_id varchar(63), host varchar(255) DEFAULT NULL, name varchar(255) DEFAULT NULL, version varchar(63) DEFAULT 'latest', server_type varchar(63) DEFAULT 'VANILLA', cpu varchar(63) DEFAULT '500', memory varchar(63) DEFAULT '512', - storage varchar(63) DEFAULT NULL, backup_enabled BOOLEAN DEFAULT FALSE, backup_host varchar(255) DEFAULT NULL, backup_bucket_path varchar(255) DEFAULT NULL, diff --git a/lib/database/postgres.js b/lib/database/postgres.js index 452b53c..eb2a037 100644 --- a/lib/database/postgres.js +++ b/lib/database/postgres.js @@ -11,7 +11,7 @@ const { MCL_POSTGRES_DATABASE: database, MCL_POSTGRES_ENABLED: pgEnabled, MCL_POSTGRES_HOST: host, - MCL_POSTGRES_PASS: password, + MCL_POSTGRES_PASSWORD: password, MCL_POSTGRES_PORT: port, MCL_POSTGRES_USER: user, } = process.env; diff --git a/lib/database/queries/server-queries.js b/lib/database/queries/server-queries.js index 59dea89..66300bc 100644 --- a/lib/database/queries/server-queries.js +++ b/lib/database/queries/server-queries.js @@ -2,7 +2,7 @@ import pg from "../postgres.js"; import { deleteQuery, insertQuery, - selectWhereAllQuery, + selectWhereQuery, updateWhereAllQuery, } from "../pg-query.js"; import ExpressClientError from "../../util/ExpressClientError.js"; @@ -12,30 +12,15 @@ const asExpressClientError = (e) => { throw new ExpressClientError({ m: e.message, c: 409 }); }; -const getMclName = (host, id) => - `${host.toLowerCase().replaceAll(".", "-")}-${id}`; +const getMclName = (host, id) => `${host.replaceAll(".", "-")}-${id}`; -export async function checkAuthorization(serverId, cairoId) { - console.log( - `Checking Authorization for user ${cairoId} for serverId ${serverId}`, - ); - if (!cairoId) return false; - const q = selectWhereAllQuery(table, { - id: serverId, - owner_cairo_id: cairoId, - }); - return (await pg.query(q)).length === 1; -} - -export async function createServerEntry(cairoId, serverSpec) { +export async function createServerEntry(serverSpec) { const { name, host, version, serverType: server_type, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage: storage_val, extraPorts: extra_ports, backupHost: backup_host, backupBucket: backup_bucket_path, @@ -43,16 +28,12 @@ export async function createServerEntry(cairoId, serverSpec) { backupKey: backup_key, backupInterval: backup_interval, } = serverSpec; - var q = insertQuery(table, { name, - owner_cairo_id: cairoId, host, version, server_type, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage: !storage_val || storage_val === "0" ? null : storage_val, // 0, undefined, null, or "0" becomes null extra_ports, backup_enabled: !!backup_interval ? true : null, // We already verified the payload, so any backup key will work backup_host, @@ -66,14 +47,11 @@ export async function createServerEntry(cairoId, serverSpec) { const entries = await pg.query(q); const { id, - owner_cairo_id: ownerCairoId, name, host, version, server_type: serverType, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage, extra_ports: extraPorts, backup_enabled: backupEnabled, backup_host: backupHost, @@ -87,13 +65,10 @@ export async function createServerEntry(cairoId, serverSpec) { name, mclName, id, - ownerCairoId, host, version, serverType, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage, extraPorts, backupEnabled, backupHost, @@ -115,7 +90,7 @@ export async function deleteServerEntry(serverId) { export async function getServerEntry(serverId) { if (!serverId) asExpressClientError({ message: "Server ID Required!" }); - const q = selectWhereAllQuery(table, { id: serverId }); + const q = selectWhereQuery(table, { id: serverId }); try { const serverSpecs = await pg.query(q); if (serverSpecs.length === 0) return []; @@ -123,14 +98,11 @@ export async function getServerEntry(serverId) { throw Error("Multiple servers found with the same name!"); const { id, - owner_cairo_id: ownerCairoId, name, host, version, server_type: serverType, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage, extra_ports: extraPorts, backup_enabled: backupEnabled, backup_host: backupHost, @@ -144,13 +116,10 @@ export async function getServerEntry(serverId) { name, mclName, id, - ownerCairoId, host, version, serverType, - cpu, // TODO: Ignored for now by the K8S manifests memory, - storage, extraPorts, backupEnabled, backupHost, @@ -167,14 +136,11 @@ export async function getServerEntry(serverId) { export async function modifyServerEntry(serverSpec) { const { id, - // ownerCairoId: owner_cairo_id, // DIsabled! If these becomes a reqest, please create a new function! name, - // host, // TODO: Can only be updated if service name is generic and non descriptive + host, version, serverType: server_type, - cpu, // TODO: Ignored for now by the K8S manifests memory, - // storage, // DO NOT INCLUDE THIS KEY, Not all storage providers in kubernetes allow for dynamically resizable PVCs extraPorts: extra_ports, backupEnabled: backup_enabled, backupHost: backup_host, @@ -184,66 +150,26 @@ export async function modifyServerEntry(serverSpec) { backupInterval: backup_interval, } = serverSpec; - const q = - updateWhereAllQuery( - table, - { - name, - // host, // TODO: Can only be updated if service name is generic and non descriptive - version, - server_type, - cpu, // TODO: Ignored for now by the K8S manifests - memory, - // storage, // DO NOT INCLUDE THIS KEY, Not all storage providers in kubernetes allow for dynamically resizable PVCs - extra_ports, - backup_enabled, - backup_host, - backup_bucket_path, - backup_id, - backup_key, - backup_interval, - }, - { id }, - ) + ` RETURNING *;`; - try { - const entries = await pg.query(q); - const { + const q = updateWhereAllQuery( + table, + { name, - host, // Should always read the database value - server_type: serverType, - storage, - extra_ports: extraPorts, - backup_enabled: backupEnabled, - backup_host: backupHost, - backup_bucket_path: backupPath, - backup_id: backupId, - backup_key: backupKey, - backup_interval: backupInterval, - } = entries[0]; - - const mclName = getMclName(host, id); - - return { - name, // Could change - mclName, // Shouldn't change - id, // Won't change - host, // TODO: Can only be updated if service name is generic and non descriptive, this returns the host from the database + host, version, - serverType, - cpu, // TODO: Ignored for now by the K8S manifests + server_type, memory, - storage, - extraPorts, - backupEnabled, - backupHost, - backupPath, - backupId, - backupKey, - backupInterval, - }; - } catch (e) { - asExpressClientError(e); - } + extra_ports, + backup_enabled, + backup_host, + backup_bucket_path, + backup_id, + backup_key, + backup_interval, + }, + { id }, + ); + + return pg.query(q); } export async function getServerEntries() { diff --git a/lib/k8s/configs/containers/ftp-server.yml b/lib/k8s/configs/containers/ftp-server.yml index 3544592..aade99b 100644 --- a/lib/k8s/configs/containers/ftp-server.yml +++ b/lib/k8s/configs/containers/ftp-server.yml @@ -6,7 +6,7 @@ env: image: garethflowers/ftp-server imagePullPolicy: IfNotPresent livenessProbe: - exec: { command: ["/bin/sh", "-c", "netstat -a | grep -q ftp"] } + exec: { command: ["echo"] } failureThreshold: 20 initialDelaySeconds: 0 periodSeconds: 5 @@ -15,7 +15,7 @@ livenessProbe: name: changeme-name-ftp ports: [] # Programatically add all the ports for easier readability, Ports include: 20,21,40000-400009 readinessProbe: - exec: { command: ["/bin/sh", "-c", "netstat -a | grep -q ftp"] } + exec: { command: ["echo"] } failureThreshold: 20 initialDelaySeconds: 0 periodSeconds: 5 diff --git a/lib/k8s/configs/extra-svc.yml b/lib/k8s/configs/extra-svc.yml index dee717f..447a169 100644 --- a/lib/k8s/configs/extra-svc.yml +++ b/lib/k8s/configs/extra-svc.yml @@ -20,4 +20,4 @@ spec: selector: app: changeme-app sessionAffinity: None - type: LoadBalancer + type: ClusterIP diff --git a/lib/k8s/configs/server-deployment.yml b/lib/k8s/configs/server-deployment.yml index 0acd0cf..275013a 100644 --- a/lib/k8s/configs/server-deployment.yml +++ b/lib/k8s/configs/server-deployment.yml @@ -30,13 +30,11 @@ spec: # runAsUser: 1000 terminationGracePeriodSeconds: 30 volumes: - - emptyDir: {} - name: datadir + - name: datadir + persistentVolumeClaim: + claimName: changeme-pvc-name - emptyDir: {} name: backupdir - # - name: datadir - # persistentVolumeClaim: - # claimName: changeme-pvc-name # - name: rclone-config # secret: # defaultMode: 420 diff --git a/lib/k8s/configs/server-svc.yml b/lib/k8s/configs/server-svc.yml index a6f520e..f21db9a 100644 --- a/lib/k8s/configs/server-svc.yml +++ b/lib/k8s/configs/server-svc.yml @@ -11,6 +11,8 @@ metadata: namespace: changeme-namespace spec: internalTrafficPolicy: Cluster + ipFamilies: + - IPv4 ipFamilyPolicy: SingleStack ports: # Programatically add all FTP ports. Port range includes 20, 21, 40000-40001 - name: minecraft diff --git a/lib/k8s/k8s-config.js b/lib/k8s/k8s-config.js deleted file mode 100644 index cbe55b6..0000000 --- a/lib/k8s/k8s-config.js +++ /dev/null @@ -1,14 +0,0 @@ -import k8s from "@kubernetes/client-node"; -const MCL_KUBECONFIG = process.env.MCL_KUBECONFIG; -const envConfig = MCL_KUBECONFIG ? MCL_KUBECONFIG : null; -const kc = new k8s.KubeConfig(); -try { - if (!!envConfig) - kc.loadFromString(Buffer.from(envConfig, "base64").toString("utf8")); - else kc.loadFromDefault(); -} catch (e) { - kc.loadFromDefault(); -} -if(kc.contexts.length === 1) kc.setCurrentContext(kc.contexts[0].name); -if(!kc.currentContext) throw new Error("Could not infer current context! Please set it manually in the Kubeconfig!"); -export default kc; diff --git a/lib/k8s/k8s-server-control.js b/lib/k8s/k8s-server-control.js index c708328..f82187a 100644 --- a/lib/k8s/k8s-server-control.js +++ b/lib/k8s/k8s-server-control.js @@ -7,8 +7,8 @@ import { getCoreServerContainer, getBackupContainer, } from "./server-containers.js"; -import { checkAuthorization } from "../database/queries/server-queries.js"; -import kc from "./k8s-config.js"; +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); @@ -25,20 +25,6 @@ const mineclusterManaged = (o) => export const serverMatch = (serverId) => (o) => o.metadata.annotations["minecluster.dunemask.net/id"] === serverId; -export const cairoMatch = (cairoId) => (o) => - checkAuthorization( - o.metadata.annotations["minecluster.dunemask.net/id"], - cairoId, - ); - -export async function getUserDeployments(cairoId) { - const authFIlter = cairoMatch(cairoId); - const allDeployments = await getDeployments(); - const authChecks = allDeployments.map(authFIlter); - const authorizations = await Promise.all(authChecks); - return allDeployments.filter((_d, i) => authorizations[i]); -} - export async function getDeployments() { const deploymentRes = await k8sDeps.listNamespacedDeployment(namespace); const serverDeployments = deploymentRes.body.items.filter(mineclusterManaged); diff --git a/lib/k8s/server-containers.js b/lib/k8s/server-containers.js index a969c69..0192d2a 100644 --- a/lib/k8s/server-containers.js +++ b/lib/k8s/server-containers.js @@ -4,7 +4,7 @@ import yaml from "js-yaml"; const loadYaml = (f) => yaml.load(fs.readFileSync(path.resolve(f), "utf8")); export function getFtpContainer(serverSpec) { - const { mclName, storage } = serverSpec; + const { mclName } = serverSpec; const ftpContainer = loadYaml("lib/k8s/configs/containers/ftp-server.yml"); ftpContainer.name = `mcl-${mclName}-ftp`; const ftpPortList = [ @@ -18,12 +18,11 @@ export function getFtpContainer(serverSpec) { name, protocol: "TCP", })); - if (!storage) delete ftpContainer.volumeMounts; return ftpContainer; } export function getCoreServerContainer(serverSpec) { - const { mclName, version, serverType, memory, storage } = serverSpec; + const { mclName, version, serverType, memory } = serverSpec; const container = loadYaml("lib/k8s/configs/containers/minecraft-server.yml"); // Container Updates container.name = `mcl-${mclName}-server`; @@ -39,21 +38,12 @@ export function getCoreServerContainer(serverSpec) { // RCON const rs = `mcl-${mclName}-rcon-secret`; findEnv("RCON_PASSWORD").valueFrom.secretKeyRef.name = rs; - if (!storage) delete container.volumeMounts; return container; } export function getServerContainer(serverSpec) { - const { - difficulty, - gamemode, - motd, - maxPlayers, - seed, - ops, - whitelist, - storage, - } = serverSpec; + const { difficulty, gamemode, motd, maxPlayers, seed, ops, whitelist } = + serverSpec; const container = getCoreServerContainer(serverSpec); const findEnv = (k) => container.env.find(({ name: n }) => n === k); @@ -67,13 +57,12 @@ export function getServerContainer(serverSpec) { updateEnv("SEED", seed); updateEnv("OPS", ops); updateEnv("WHITELIST", whitelist); */ - if (!storage) delete container.volumeMounts; return container; } export function getBackupContainer(serverSpec) { - const { mclName, backupEnabled, backupPath, storage } = serverSpec; + const { mclName, backupEnabled, backupPath } = serverSpec; const container = loadYaml("lib/k8s/configs/containers/minecraft-backup.yml"); if (!backupEnabled) return; const findEnv = (k) => container.env.find(({ name: n }) => n === k); @@ -84,7 +73,6 @@ export function getBackupContainer(serverSpec) { // RCON const rs = `mcl-${mclName}-rcon-secret`; findEnv("RCON_PASSWORD").valueFrom.secretKeyRef.name = rs; - if (!storage) delete container.volumeMounts; return container; } diff --git a/lib/k8s/server-create.js b/lib/k8s/server-create.js index 7d09e61..7578838 100644 --- a/lib/k8s/server-create.js +++ b/lib/k8s/server-create.js @@ -11,14 +11,15 @@ import { getBackupContainer, } from "./server-containers.js"; -import kc from "./k8s-config.js"; +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); const namespace = process.env.MCL_SERVER_NAMESPACE; const loadYaml = (f) => yaml.load(fs.readFileSync(path.resolve(f), "utf8")); -export function createExtraService(serverSpec) { +function createExtraService(serverSpec) { const { mclName, id, extraPorts } = serverSpec; if (!extraPorts) return; const serviceYaml = loadYaml("lib/k8s/configs/extra-svc.yml"); @@ -49,7 +50,7 @@ export function createExtraService(serverSpec) { return serviceYaml; } -export function createBackupSecret(serverSpec) { +function createBackupSecret(serverSpec) { if (!serverSpec.backupEnabled) return; // If backup not defined, don't create RCLONE secret const { mclName, id, backupId, backupKey, backupHost } = serverSpec; const backupYaml = loadYaml("lib/k8s/configs/backup-secret.yml"); @@ -66,8 +67,6 @@ export function createBackupSecret(serverSpec) { `secret_access_key = ${backupKey}`, `endpoint = ${backupHost}`, `acl = private`, - `no_check_bucket = true`, - `no_check_container = true`, ].join("\n"); backupYaml.data["rclone.conf"] = Buffer.from(rcloneConfig).toString("base64"); return backupYaml; @@ -87,19 +86,18 @@ function createRconSecret(serverSpec) { } function createServerVolume(serverSpec) { - const { mclName, id, storage } = serverSpec; - if (!storage) return; + const { mclName, id } = serverSpec; const volumeYaml = loadYaml("lib/k8s/configs/server-pvc.yml"); volumeYaml.metadata.labels.service = `mcl-${mclName}-server`; volumeYaml.metadata.name = `mcl-${mclName}-volume`; volumeYaml.metadata.namespace = namespace; volumeYaml.metadata.annotations["minecluster.dunemask.net/id"] = id; - volumeYaml.spec.resources.requests.storage = `${storage}Gi`; + volumeYaml.spec.resources.requests.storage = "5Gi"; // TODO: Changeme return volumeYaml; } function createServerDeploy(serverSpec) { - const { mclName, id, backupEnabled, storage } = serverSpec; + const { mclName, id, backupEnabled } = serverSpec; const deployYaml = loadYaml("lib/k8s/configs/server-deployment.yml"); const { metadata } = deployYaml; const serverContainer = getServerContainer(serverSpec); @@ -121,18 +119,9 @@ function createServerDeploy(serverSpec) { id; // Volumes - if (!!storage) { - const dvi = deployYaml.spec.template.spec.volumes.findIndex( - ({ name }) => name === "datadir", - ); - delete deployYaml.spec.template.spec.volumes[dvi].emptyDir; - deployYaml.spec.template.spec.volumes[dvi] = { - ...deployYaml.spec.template.spec.volumes[dvi], - persistentVolumeClaim: { - claimName: `mcl-${mclName}-volume`, - }, - }; - } + deployYaml.spec.template.spec.volumes.find( + ({ name }) => name === "datadir", + ).persistentVolumeClaim.claimName = `mcl-${mclName}-volume`; // Backups if (backupEnabled) { @@ -153,7 +142,7 @@ function createServerDeploy(serverSpec) { return deployYaml; } -export function createServerService(serverSpec) { +function createServerService(serverSpec) { const { mclName, host, id } = serverSpec; const serviceYaml = loadYaml("lib/k8s/configs/server-svc.yml"); serviceYaml.metadata.annotations["ingress.qumine.io/hostname"] = host; @@ -205,10 +194,9 @@ export default async function createServerResources(createSpec) { const rconService = createRconService(createSpec); const extraService = createExtraService(createSpec); const serverResources = []; - if (!!serverVolume) - serverResources.push( - k8sCore.createNamespacedPersistentVolumeClaim(namespace, serverVolume), - ); + serverResources.push( + k8sCore.createNamespacedPersistentVolumeClaim(namespace, serverVolume), + ); if (!!extraService) serverResources.push( k8sCore.createNamespacedService(namespace, extraService), diff --git a/lib/k8s/server-delete.js b/lib/k8s/server-delete.js index c0364a8..4ced830 100644 --- a/lib/k8s/server-delete.js +++ b/lib/k8s/server-delete.js @@ -2,7 +2,8 @@ import k8s from "@kubernetes/client-node"; import { ERR } from "../util/logging.js"; import { getServerAssets } from "./k8s-server-control.js"; import ExpressClientError from "../util/ExpressClientError.js"; -import kc from "./k8s-config.js"; +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); diff --git a/lib/k8s/server-files.js b/lib/k8s/server-files.js index 36dcd4a..ce29a02 100644 --- a/lib/k8s/server-files.js +++ b/lib/k8s/server-files.js @@ -2,8 +2,7 @@ import ftp from "basic-ftp"; import { ERR } from "../util/logging.js"; import { getServerAssets } from "./k8s-server-control.js"; import ExpressClientError from "../util/ExpressClientError.js"; -import { Readable, Transform } from "node:stream"; -import { dirname, basename } from "node:path"; +import { Readable, Writable, Transform } from "node:stream"; const namespace = process.env.MCL_SERVER_NAMESPACE; @@ -83,27 +82,16 @@ export async function uploadServerItem(serverSpec, file) { const { path } = serverSpec; pathSecurityCheck(path); await useServerFtp(serverSpec, async (c) => { - await c.ensureDir(dirname(path)); - await c.uploadFrom(fileStream, basename(path)); + await c.uploadFrom(fileStream, path); }).catch(handleError); } -export async function getServerItem(serverSpec) { +export async function getServerItem(serverSpec, writableStream) { const { path } = serverSpec; - const ds = new Transform({ transform: (c, _e, cb) => cb(null, c) }); + const ds = new Transform({ transform: (c, e, cb) => cb(null, c) }); pathSecurityCheck(path); const ftpTransfer = useServerFtp(serverSpec, async (c) => { await c.downloadTo(ds, path); }).catch(handleError); return { ds, ftpTransfer }; } - -export async function moveServerItems(serverSpec) { - const { destination, origin, files } = serverSpec; - useServerFtp(serverSpec, async (c) => - Promise.all( - files.map((f) => c.rename(`${origin}/${f}`, `${destination}/${f}`)), - ), - ).catch(handleError); - return files; -} diff --git a/lib/k8s/server-modify.js b/lib/k8s/server-modify.js deleted file mode 100644 index 74a1428..0000000 --- a/lib/k8s/server-modify.js +++ /dev/null @@ -1,59 +0,0 @@ -import k8s from "@kubernetes/client-node"; -import { - createExtraService, - createBackupSecret, - createServerService, -} from "./server-create.js"; -import kc from "./k8s-config.js"; -import { getServerAssets } from "./k8s-server-control.js"; -const k8sCore = kc.makeApiClient(k8s.CoreV1Api); -const namespace = process.env.MCL_SERVER_NAMESPACE; - -export default async function modifyServerResources(modifySpec) { - const { id: serverId } = modifySpec; - const serverAssets = await getServerAssets(serverId); - const serverService = createServerService(modifySpec); - const extraService = createExtraService(modifySpec); - const backupSecret = createBackupSecret(modifySpec); - const serverResources = []; - - if (!!serverService) - // Will Always Exist - serverResources.push( - k8sCore.replaceNamespacedService( - serverAssets.service.metadata.name, - namespace, - serverService, - ), - ); - - if (!!extraService && !!serverAssets.extraService) - // Might not exist - serverResources.push( - k8sCore.replaceNamespacedService( - serverAssets.extraService.metadata.name, - namespace, - extraService, - ), - ); - else if (!!extraService) - serverResources.push( - k8sCore.createNamespacedService(namespace, extraService), - ); - - if (!!backupSecret && !!serverAssets.backupSecret) - // Might not exist - serverResources.push( - k8sCore.replaceNamespacedSecret( - serverAssets.backupSecret.metadata.name, - namespace, - backupSecret, - ), - ); - else if (!!backupSecret) - serverResources.push( - k8sCore.createNamespacedSecret(namespace, backupSecret), - ); - - return await Promise.all(serverResources); -} diff --git a/lib/k8s/server-status.js b/lib/k8s/server-status.js index 0c421c1..6317d8e 100644 --- a/lib/k8s/server-status.js +++ b/lib/k8s/server-status.js @@ -1,7 +1,8 @@ import k8s from "@kubernetes/client-node"; -import { getUserDeployments } from "./k8s-server-control.js"; +import { getDeployments } from "./k8s-server-control.js"; import { getServerEntries } from "../database/queries/server-queries.js"; -import kc from "./k8s-config.js"; +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sMetrics = new k8s.Metrics(kc); const namespace = process.env.MCL_SERVER_NAMESPACE; @@ -38,12 +39,12 @@ function getServerStatus(server) { ) !== undefined; const serverAvailable = services.includes(`server`) && deploymentAvailable; const ftpAvailable = services.includes("ftp"); // TODO this needs some handling for container creation - return { serverAvailable, ftpAvailable, services, deploymentAvailable }; + return { serverAvailable, ftpAvailable, services }; } -export async function getInstances(cairoId) { +export async function getInstances() { const [serverDeployments, podMetricsRes, entries] = await Promise.all([ - getUserDeployments(cairoId), + getDeployments(), k8sMetrics.getPodMetrics(namespace), getServerEntries(), ]); @@ -52,18 +53,15 @@ export async function getInstances(cairoId) { const serverInstances = serverDeployments.map((s) => { serverId = s.metadata.annotations["minecluster.dunemask.net/id"]; const entry = entries.find((e) => e.id === serverId); - const { ftpAvailable, serverAvailable, services, deploymentAvailable } = - getServerStatus(s); + const { ftpAvailable, serverAvailable, services } = getServerStatus(s); metrics = getServerMetrics(podMetricsRes, serverId, serverAvailable); return { name: !!entry ? entry.name : "Unknown", - host: !!entry ? entry.host : "Unkonwn", id: serverId, metrics, services, serverAvailable, ftpAvailable, - deploymentAvailable, }; }); return serverInstances; diff --git a/lib/routes/auth-route.js b/lib/routes/auth-route.js deleted file mode 100644 index 638e163..0000000 --- a/lib/routes/auth-route.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Router } from "express"; -import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; -const router = Router(); - -const cairoProjectId = process.env.MCL_CAIRO_PROJECT; -if(!cairoProjectId) throw Error("Cairo Project Required!"); - -const ok = (_r, res) => res.sendStatus(200); - -function cairoRedirect(req, res) { - res.redirect( - `${process.env.MCL_CAIRO_URL}/cairo/authenticate?redirectUri=${req.query.redirectUri}&projectId=${cairoProjectId}`, - ); -} - -router.get("/verify", cairoAuthMiddleware, ok); -router.get("/redirect", cairoRedirect); - -export default router; diff --git a/lib/routes/files-route.js b/lib/routes/files-route.js index d82f780..c27c175 100644 --- a/lib/routes/files-route.js +++ b/lib/routes/files-route.js @@ -6,20 +6,16 @@ import { listFiles, uploadItem, getItem, - moveItems, } from "../controllers/file-controller.js"; -import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; - const router = Router(); -router.use([jsonMiddleware(), cairoAuthMiddleware]); +router.use(jsonMiddleware()); const multerMiddleware = multer(); router.post("/list", listFiles); router.post("/folder", createFolder); router.delete("/item", deleteItem); router.post("/item", getItem); -router.post("/move", moveItems); router.post("/upload", multerMiddleware.single("file"), uploadItem); export default router; diff --git a/lib/routes/middlewares/auth-middleware.js b/lib/routes/middlewares/auth-middleware.js deleted file mode 100644 index 5758cb4..0000000 --- a/lib/routes/middlewares/auth-middleware.js +++ /dev/null @@ -1,47 +0,0 @@ -// Imports -import { Router } from "express"; -import bearerTokenMiddleware from "express-bearer-token"; -import { ERR, VERB } from "../../util/logging.js"; - -// Constants -const { MCL_CAIRO_URL, MCL_CAIRO_PROJECT } = process.env; -const cairoAuthMiddleware = Router(); - -const cairoAuthenticate = async (token) => { - const config = { headers: { Authorization: `Bearer ${token}` } }; - return fetch(`${MCL_CAIRO_URL}/api/${MCL_CAIRO_PROJECT}/auth/credentials`, config).then(async (res) => { - if (res.status >= 300) { - const errorMessage = await res - .json() - .then((data) => JSON.stringify(data)) - .catch(() => res.statusText); - throw Error( - `Could not authenticate with user, receieved message: ${errorMessage}`, - ); - } - - return res.json(); - }); -}; - -// Middleware -const cairoAuthHandler = (req, res, next) => { - if (!req.token) return res.status(401).send("Cairo auth required!"); - cairoAuthenticate(req.token) - .then((authData) => { - console.log(authData); - if (!authData?.user?.id) - throw Error(`Cairo didn't return the expected data! ${authData?.user?.id}`); - req.cairoId = authData?.user?.id; - }) - .then(() => next()) - .catch((err) => { - ERR("AUTH", err.response ? err.response.data : err.message); - if (!err.response) return res.status(500).send(`Auth failure ${err}`); - return res.status(err.response.status).send(err.response.data); - }); -}; - -cairoAuthMiddleware.use([bearerTokenMiddleware(), cairoAuthHandler]); - -export default cairoAuthMiddleware; diff --git a/lib/routes/s3-route.js b/lib/routes/s3-route.js deleted file mode 100644 index c97afb0..0000000 --- a/lib/routes/s3-route.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Router, json as jsonMiddleware } from "express"; -import { getS3BackupUrl, listS3Backups } from "../controllers/s3-controller.js"; -import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; - -const router = Router(); -router.use([cairoAuthMiddleware, jsonMiddleware()]); - -router.post("/backups", listS3Backups); -router.post("/backup-url", getS3BackupUrl); - -export default router; diff --git a/lib/routes/server-route.js b/lib/routes/server-route.js index d8ae832..d6eb922 100644 --- a/lib/routes/server-route.js +++ b/lib/routes/server-route.js @@ -11,11 +11,8 @@ import { serverInstances, serverList, } from "../controllers/status-controller.js"; - -import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; - const router = Router(); -router.use([jsonMiddleware(), cairoAuthMiddleware]); +router.use(jsonMiddleware()); // Routes router.post("/create", createServer); router.delete("/delete", deleteServer); diff --git a/lib/routes/system-route.js b/lib/routes/system-route.js index ef913ed..66e1022 100644 --- a/lib/routes/system-route.js +++ b/lib/routes/system-route.js @@ -1,12 +1,9 @@ import { Router } from "express"; import k8s from "@kubernetes/client-node"; import { WARN } from "../util/logging.js"; -import kc from "../k8s/k8s-config.js"; const router = Router(); - -import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; -router.use(cairoAuthMiddleware); - +const kc = new k8s.KubeConfig(); +kc.loadFromDefault(); const k8sApi = kc.makeApiClient(k8s.CoreV1Api); // Get Routes router.get("/available", (req, res) => { diff --git a/lib/server/router.js b/lib/server/router.js index 685dd1d..ccedebb 100644 --- a/lib/server/router.js +++ b/lib/server/router.js @@ -3,12 +3,10 @@ import express from "express"; // Routes import vitals from "../routes/vitals-route.js"; -import authRoute from "../routes/auth-route.js"; import systemRoute from "../routes/system-route.js"; import serverRoute from "../routes/server-route.js"; import filesRoute from "../routes/files-route.js"; import reactRoute from "../routes/react-route.js"; -import s3Route from "../routes/s3-route.js"; import { logErrors, clientErrorHandler, @@ -24,11 +22,9 @@ export default function buildRoutes(pg, skio) { // Middlewares // Routes - router.use("/api/auth", authRoute); router.use("/api/system", systemRoute); router.use("/api/server", serverRoute); router.use("/api/files", filesRoute); - router.use("/api/s3", s3Route); router.use(["/mcl", "/mcl/*"], reactRoute); // Static Build Route /*router.use(logErrors); router.use(clientErrorHandler); diff --git a/lib/storage/s3-integration.js b/lib/storage/s3-integration.js new file mode 100644 index 0000000..34ed5d5 --- /dev/null +++ b/lib/storage/s3-integration.js @@ -0,0 +1,34 @@ +import multer from "multer"; +import multerS3 from "multer-s3"; +import AWS from "aws-sdk"; + +// Environment Variables +const { + MCL_S3_ENDPOINT: s3Endpoint, + MCL_S3_ACCESS_KEY_ID: s3KeyId, + MCL_S3_ACCESS_KEY: s3Key, +} = process.env; + +export const mcl = "mcl"; + +export const s3 = new AWS.S3({ + endpoint: s3Endpoint, + accessKeyId: s3KeyId, + secretAccessKey: s3Key, + sslEnabled: true, + s3ForcePathStyle: true, +}); + +const storage = multerS3({ + s3, + bucket, + contentType: multerS3.AUTO_CONTENT_TYPE, + metadata: (req, file, cb) => { + cb(null, { fieldName: file.fieldname }); + }, + key: (req, file, cb) => { + cb(null, Date.now().toString()); + }, +}); + +export const upload = multer({ storage }); diff --git a/package-lock.json b/package-lock.json index cc9f68d..a773352 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,53 +1,50 @@ { "name": "minecluster", - "version": "0.0.1-alpha.1", + "version": "0.0.1-alpha.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "minecluster", - "version": "0.0.1-alpha.1", + "version": "0.0.1-alpha.0", "license": "LGPL-2.1", "dependencies": { - "@aws-sdk/client-s3": "^3.529.1", - "@aws-sdk/s3-request-presigner": "^3.529.1", "@kubernetes/client-node": "^0.20.0", + "aws-sdk": "^2.1514.0", "basic-ftp": "^5.0.4", "bcrypt": "^5.1.1", "chalk": "^5.3.0", "express": "^4.18.2", - "express-bearer-token": "^2.4.0", "figlet": "^1.7.0", "js-yaml": "^4.1.0", - "moment": "^2.30.1", + "moment": "^2.29.4", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "pg-promise": "^11.5.4", "postgres-migrations": "^5.3.0", "rcon-client": "^4.2.4", - "react-dropzone": "^14.2.3", - "socket.io": "^4.7.4", + "socket.io": "^4.7.2", "uuid": "^9.0.1" }, "devDependencies": { - "@emotion/react": "^11.11.3", + "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.9", - "@mui/material": "^5.15.9", - "@tanstack/react-query": "^5.20.1", + "@mui/icons-material": "^5.14.19", + "@mui/material": "^5.14.20", + "@tanstack/react-query": "^5.12.2", "@vitejs/plugin-react": "^4.2.1", "chonky": "^2.3.2", "chonky-icon-fontawesome": "^2.3.2", "concurrently": "^8.2.2", - "nodemon": "^3.0.3", - "prettier": "^3.2.5", + "nodemon": "^3.0.2", + "prettier": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-quill": "^2.0.0", - "react-router-dom": "^6.22.0", - "react-toastify": "^10.0.4", - "socket.io-client": "^4.7.4", - "vite": "^5.1.1" + "react-router-dom": "^6.20.1", + "react-toastify": "^9.1.3", + "socket.io-client": "^4.7.2", + "vite": "^5.0.7" } }, "node_modules/@ampproject/remapping": { @@ -67,6 +64,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -76,12 +74,14 @@ "node_modules/@aws-crypto/crc32/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/crc32c": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -91,12 +91,14 @@ "node_modules/@aws-crypto/crc32c/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/ie11-detection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -104,12 +106,14 @@ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/sha1-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "peer": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/supports-web-crypto": "^3.0.0", @@ -123,12 +127,14 @@ "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "peer": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -143,12 +149,14 @@ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "peer": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -158,12 +166,14 @@ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "peer": true, "dependencies": { "tslib": "^1.11.1" } @@ -171,12 +181,14 @@ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "peer": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -186,69 +198,69 @@ "node_modules/@aws-crypto/util/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "peer": true }, "node_modules/@aws-sdk/client-s3": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.529.1.tgz", - "integrity": "sha512-ZpvyO4w3XWo/OjXLd3fm7CLcKUUYcyady9qzTnKKSnp8a2NqO7UvU/1zhYdm+yyy8TR/9t7sDy+q6AYd4Nsr8g==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.427.0.tgz", + "integrity": "sha512-YKjJ9zgn0oE393HURKgvjNoX6lxUjb+dkTBE1GymFnGCPl6VxQbKXajXWNqUyN+oPPlZ2osEiljPaN0RserUjA==", + "peer": true, "dependencies": { "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.529.1", - "@aws-sdk/core": "3.529.1", - "@aws-sdk/credential-provider-node": "3.529.1", - "@aws-sdk/middleware-bucket-endpoint": "3.525.0", - "@aws-sdk/middleware-expect-continue": "3.523.0", - "@aws-sdk/middleware-flexible-checksums": "3.523.0", - "@aws-sdk/middleware-host-header": "3.523.0", - "@aws-sdk/middleware-location-constraint": "3.523.0", - "@aws-sdk/middleware-logger": "3.523.0", - "@aws-sdk/middleware-recursion-detection": "3.523.0", - "@aws-sdk/middleware-sdk-s3": "3.525.0", - "@aws-sdk/middleware-signing": "3.523.0", - "@aws-sdk/middleware-ssec": "3.523.0", - "@aws-sdk/middleware-user-agent": "3.525.0", - "@aws-sdk/region-config-resolver": "3.525.0", - "@aws-sdk/signature-v4-multi-region": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-endpoints": "3.525.0", - "@aws-sdk/util-user-agent-browser": "3.523.0", - "@aws-sdk/util-user-agent-node": "3.525.0", - "@aws-sdk/xml-builder": "3.523.0", - "@smithy/config-resolver": "^2.1.4", - "@smithy/core": "^1.3.5", - "@smithy/eventstream-serde-browser": "^2.1.3", - "@smithy/eventstream-serde-config-resolver": "^2.1.3", - "@smithy/eventstream-serde-node": "^2.1.3", - "@smithy/fetch-http-handler": "^2.4.3", - "@smithy/hash-blob-browser": "^2.1.3", - "@smithy/hash-node": "^2.1.3", - "@smithy/hash-stream-node": "^2.1.3", - "@smithy/invalid-dependency": "^2.1.3", - "@smithy/md5-js": "^2.1.3", - "@smithy/middleware-content-length": "^2.1.3", - "@smithy/middleware-endpoint": "^2.4.4", - "@smithy/middleware-retry": "^2.1.4", - "@smithy/middleware-serde": "^2.1.3", - "@smithy/middleware-stack": "^2.1.3", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/node-http-handler": "^2.4.1", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/url-parser": "^2.1.3", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.4", - "@smithy/util-defaults-mode-node": "^2.2.3", - "@smithy/util-endpoints": "^1.1.4", - "@smithy/util-retry": "^2.1.3", - "@smithy/util-stream": "^2.1.3", - "@smithy/util-utf8": "^2.1.1", - "@smithy/util-waiter": "^2.1.3", + "@aws-sdk/client-sts": "3.427.0", + "@aws-sdk/credential-provider-node": "3.427.0", + "@aws-sdk/middleware-bucket-endpoint": "3.425.0", + "@aws-sdk/middleware-expect-continue": "3.425.0", + "@aws-sdk/middleware-flexible-checksums": "3.425.0", + "@aws-sdk/middleware-host-header": "3.425.0", + "@aws-sdk/middleware-location-constraint": "3.425.0", + "@aws-sdk/middleware-logger": "3.425.0", + "@aws-sdk/middleware-recursion-detection": "3.425.0", + "@aws-sdk/middleware-sdk-s3": "3.427.0", + "@aws-sdk/middleware-signing": "3.425.0", + "@aws-sdk/middleware-ssec": "3.425.0", + "@aws-sdk/middleware-user-agent": "3.427.0", + "@aws-sdk/region-config-resolver": "3.425.0", + "@aws-sdk/signature-v4-multi-region": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-endpoints": "3.427.0", + "@aws-sdk/util-user-agent-browser": "3.425.0", + "@aws-sdk/util-user-agent-node": "3.425.0", + "@aws-sdk/xml-builder": "3.310.0", + "@smithy/config-resolver": "^2.0.11", + "@smithy/eventstream-serde-browser": "^2.0.10", + "@smithy/eventstream-serde-config-resolver": "^2.0.10", + "@smithy/eventstream-serde-node": "^2.0.10", + "@smithy/fetch-http-handler": "^2.2.1", + "@smithy/hash-blob-browser": "^2.0.10", + "@smithy/hash-node": "^2.0.10", + "@smithy/hash-stream-node": "^2.0.10", + "@smithy/invalid-dependency": "^2.0.10", + "@smithy/md5-js": "^2.0.10", + "@smithy/middleware-content-length": "^2.0.12", + "@smithy/middleware-endpoint": "^2.0.10", + "@smithy/middleware-retry": "^2.0.13", + "@smithy/middleware-serde": "^2.0.10", + "@smithy/middleware-stack": "^2.0.4", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/node-http-handler": "^2.1.6", + "@smithy/protocol-http": "^3.0.6", + "@smithy/smithy-client": "^2.1.9", + "@smithy/types": "^2.3.4", + "@smithy/url-parser": "^2.0.10", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.13", + "@smithy/util-defaults-mode-node": "^2.0.15", + "@smithy/util-retry": "^2.0.3", + "@smithy/util-stream": "^2.0.14", + "@smithy/util-utf8": "^2.0.0", + "@smithy/util-waiter": "^2.0.10", + "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, "engines": { @@ -256,166 +268,92 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.529.1.tgz", - "integrity": "sha512-KT1U/ZNjDhVv2ZgjzaeAn9VM7l667yeSguMrRYC8qk5h91/61MbjZypi6eOuKuVM+0fsQvzKScTQz0Lio0eYag==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.427.0.tgz", + "integrity": "sha512-sFVFEmsQ1rmgYO1SgrOTxE/MTKpeE4hpOkm1WqhLQK7Ij136vXpjCxjH1JYZiHiUzO1wr9t4ex4dlB5J3VS/Xg==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.529.1", - "@aws-sdk/middleware-host-header": "3.523.0", - "@aws-sdk/middleware-logger": "3.523.0", - "@aws-sdk/middleware-recursion-detection": "3.523.0", - "@aws-sdk/middleware-user-agent": "3.525.0", - "@aws-sdk/region-config-resolver": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-endpoints": "3.525.0", - "@aws-sdk/util-user-agent-browser": "3.523.0", - "@aws-sdk/util-user-agent-node": "3.525.0", - "@smithy/config-resolver": "^2.1.4", - "@smithy/core": "^1.3.5", - "@smithy/fetch-http-handler": "^2.4.3", - "@smithy/hash-node": "^2.1.3", - "@smithy/invalid-dependency": "^2.1.3", - "@smithy/middleware-content-length": "^2.1.3", - "@smithy/middleware-endpoint": "^2.4.4", - "@smithy/middleware-retry": "^2.1.4", - "@smithy/middleware-serde": "^2.1.3", - "@smithy/middleware-stack": "^2.1.3", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/node-http-handler": "^2.4.1", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/url-parser": "^2.1.3", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.4", - "@smithy/util-defaults-mode-node": "^2.2.3", - "@smithy/util-endpoints": "^1.1.4", - "@smithy/util-middleware": "^2.1.3", - "@smithy/util-retry": "^2.1.3", - "@smithy/util-utf8": "^2.1.1", + "@aws-sdk/middleware-host-header": "3.425.0", + "@aws-sdk/middleware-logger": "3.425.0", + "@aws-sdk/middleware-recursion-detection": "3.425.0", + "@aws-sdk/middleware-user-agent": "3.427.0", + "@aws-sdk/region-config-resolver": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-endpoints": "3.427.0", + "@aws-sdk/util-user-agent-browser": "3.425.0", + "@aws-sdk/util-user-agent-node": "3.425.0", + "@smithy/config-resolver": "^2.0.11", + "@smithy/fetch-http-handler": "^2.2.1", + "@smithy/hash-node": "^2.0.10", + "@smithy/invalid-dependency": "^2.0.10", + "@smithy/middleware-content-length": "^2.0.12", + "@smithy/middleware-endpoint": "^2.0.10", + "@smithy/middleware-retry": "^2.0.13", + "@smithy/middleware-serde": "^2.0.10", + "@smithy/middleware-stack": "^2.0.4", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/node-http-handler": "^2.1.6", + "@smithy/protocol-http": "^3.0.6", + "@smithy/smithy-client": "^2.1.9", + "@smithy/types": "^2.3.4", + "@smithy/url-parser": "^2.0.10", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.13", + "@smithy/util-defaults-mode-node": "^2.0.15", + "@smithy/util-retry": "^2.0.3", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.529.1.tgz", - "integrity": "sha512-bimxCWAvRnVcluWEQeadXvHyzWlBWsuGVligsaVZaGF0TLSn0eLpzpN9B1EhHzTf7m0Kh/wGtPSH1JxO6PpB+A==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.529.1", - "@aws-sdk/core": "3.529.1", - "@aws-sdk/middleware-host-header": "3.523.0", - "@aws-sdk/middleware-logger": "3.523.0", - "@aws-sdk/middleware-recursion-detection": "3.523.0", - "@aws-sdk/middleware-user-agent": "3.525.0", - "@aws-sdk/region-config-resolver": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-endpoints": "3.525.0", - "@aws-sdk/util-user-agent-browser": "3.523.0", - "@aws-sdk/util-user-agent-node": "3.525.0", - "@smithy/config-resolver": "^2.1.4", - "@smithy/core": "^1.3.5", - "@smithy/fetch-http-handler": "^2.4.3", - "@smithy/hash-node": "^2.1.3", - "@smithy/invalid-dependency": "^2.1.3", - "@smithy/middleware-content-length": "^2.1.3", - "@smithy/middleware-endpoint": "^2.4.4", - "@smithy/middleware-retry": "^2.1.4", - "@smithy/middleware-serde": "^2.1.3", - "@smithy/middleware-stack": "^2.1.3", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/node-http-handler": "^2.4.1", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/url-parser": "^2.1.3", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.4", - "@smithy/util-defaults-mode-node": "^2.2.3", - "@smithy/util-endpoints": "^1.1.4", - "@smithy/util-middleware": "^2.1.3", - "@smithy/util-retry": "^2.1.3", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.529.1" - } - }, "node_modules/@aws-sdk/client-sts": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.529.1.tgz", - "integrity": "sha512-Rvk2Sr3MACQTOtngUU+omlf4E17k47dRVXR7OFRD6Ow5iGgC9tkN2q/ExDPW/ktPOmM0lSgzWyQ6/PC/Zq3HUg==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.427.0.tgz", + "integrity": "sha512-le2wLJKILyWuRfPz2HbyaNtu5kEki+ojUkTqCU6FPDRrqUvEkaaCBH9Awo/2AtrCfRkiobop8RuTTj6cAnpiJg==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.529.1", - "@aws-sdk/middleware-host-header": "3.523.0", - "@aws-sdk/middleware-logger": "3.523.0", - "@aws-sdk/middleware-recursion-detection": "3.523.0", - "@aws-sdk/middleware-user-agent": "3.525.0", - "@aws-sdk/region-config-resolver": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-endpoints": "3.525.0", - "@aws-sdk/util-user-agent-browser": "3.523.0", - "@aws-sdk/util-user-agent-node": "3.525.0", - "@smithy/config-resolver": "^2.1.4", - "@smithy/core": "^1.3.5", - "@smithy/fetch-http-handler": "^2.4.3", - "@smithy/hash-node": "^2.1.3", - "@smithy/invalid-dependency": "^2.1.3", - "@smithy/middleware-content-length": "^2.1.3", - "@smithy/middleware-endpoint": "^2.4.4", - "@smithy/middleware-retry": "^2.1.4", - "@smithy/middleware-serde": "^2.1.3", - "@smithy/middleware-stack": "^2.1.3", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/node-http-handler": "^2.4.1", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/url-parser": "^2.1.3", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.4", - "@smithy/util-defaults-mode-node": "^2.2.3", - "@smithy/util-endpoints": "^1.1.4", - "@smithy/util-middleware": "^2.1.3", - "@smithy/util-retry": "^2.1.3", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.529.1" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.529.1.tgz", - "integrity": "sha512-Sj42sYPfaL9PHvvciMICxhyrDZjqnnvFbPKDmQL5aFKyXy122qx7RdVqUOQERDmMQfvJh6+0W1zQlLnre89q4Q==", - "dependencies": { - "@smithy/core": "^1.3.5", - "@smithy/protocol-http": "^3.2.1", - "@smithy/signature-v4": "^2.1.3", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", + "@aws-sdk/credential-provider-node": "3.427.0", + "@aws-sdk/middleware-host-header": "3.425.0", + "@aws-sdk/middleware-logger": "3.425.0", + "@aws-sdk/middleware-recursion-detection": "3.425.0", + "@aws-sdk/middleware-sdk-sts": "3.425.0", + "@aws-sdk/middleware-signing": "3.425.0", + "@aws-sdk/middleware-user-agent": "3.427.0", + "@aws-sdk/region-config-resolver": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-endpoints": "3.427.0", + "@aws-sdk/util-user-agent-browser": "3.425.0", + "@aws-sdk/util-user-agent-node": "3.425.0", + "@smithy/config-resolver": "^2.0.11", + "@smithy/fetch-http-handler": "^2.2.1", + "@smithy/hash-node": "^2.0.10", + "@smithy/invalid-dependency": "^2.0.10", + "@smithy/middleware-content-length": "^2.0.12", + "@smithy/middleware-endpoint": "^2.0.10", + "@smithy/middleware-retry": "^2.0.13", + "@smithy/middleware-serde": "^2.0.10", + "@smithy/middleware-stack": "^2.0.4", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/node-http-handler": "^2.1.6", + "@smithy/protocol-http": "^3.0.6", + "@smithy/smithy-client": "^2.1.9", + "@smithy/types": "^2.3.4", + "@smithy/url-parser": "^2.0.10", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.13", + "@smithy/util-defaults-mode-node": "^2.0.15", + "@smithy/util-retry": "^2.0.3", + "@smithy/util-utf8": "^2.0.0", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -424,32 +362,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.523.0.tgz", - "integrity": "sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.425.0.tgz", + "integrity": "sha512-J20etnLvMKXRVi5FK4F8yOCNm2RTaQn5psQTGdDEPWJNGxohcSpzzls8U2KcMyUJ+vItlrThr4qwgpHG3i/N0w==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/types": "^2.10.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.525.0.tgz", - "integrity": "sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==", - "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/fetch-http-handler": "^2.4.3", - "@smithy/node-http-handler": "^2.4.1", - "@smithy/property-provider": "^2.1.3", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/util-stream": "^2.1.3", + "@aws-sdk/types": "3.425.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -457,20 +377,20 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.529.1.tgz", - "integrity": "sha512-RjHsuTvHIwXG7a/3ERexemiD3c9riKMCZQzY2/b0Gg0ButEVbBcMfERtUzWmQ0V4ufe/PEZjP68MH1gupcoF9A==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.427.0.tgz", + "integrity": "sha512-NmH1cO/w98CKMltYec3IrJIIco19wRjATFNiw83c+FGXZ+InJwReqBnruxIOmKTx2KDzd6fwU1HOewS7UjaaaQ==", + "peer": true, "dependencies": { - "@aws-sdk/client-sts": "3.529.1", - "@aws-sdk/credential-provider-env": "3.523.0", - "@aws-sdk/credential-provider-process": "3.523.0", - "@aws-sdk/credential-provider-sso": "3.529.1", - "@aws-sdk/credential-provider-web-identity": "3.529.1", - "@aws-sdk/types": "3.523.0", - "@smithy/credential-provider-imds": "^2.2.3", - "@smithy/property-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.3.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/credential-provider-env": "3.425.0", + "@aws-sdk/credential-provider-process": "3.425.0", + "@aws-sdk/credential-provider-sso": "3.427.0", + "@aws-sdk/credential-provider-web-identity": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -478,21 +398,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.529.1.tgz", - "integrity": "sha512-mvY7F3dMmk/0dZOCfl5sUI1bG0osureBjxhELGCF0KkJqhWI0hIzh8UnPkYytSg3vdc97CMv7pTcozxrdA3b0g==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.427.0.tgz", + "integrity": "sha512-wYYbQ57nKL8OfgRbl8k6uXcdnYml+p3LSSfDUAuUEp1HKlQ8lOXFJ3BdLr5qrk7LhpyppSRnWBmh2c3kWa7ANQ==", + "peer": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.523.0", - "@aws-sdk/credential-provider-http": "3.525.0", - "@aws-sdk/credential-provider-ini": "3.529.1", - "@aws-sdk/credential-provider-process": "3.523.0", - "@aws-sdk/credential-provider-sso": "3.529.1", - "@aws-sdk/credential-provider-web-identity": "3.529.1", - "@aws-sdk/types": "3.523.0", - "@smithy/credential-provider-imds": "^2.2.3", - "@smithy/property-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.3.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/credential-provider-env": "3.425.0", + "@aws-sdk/credential-provider-ini": "3.427.0", + "@aws-sdk/credential-provider-process": "3.425.0", + "@aws-sdk/credential-provider-sso": "3.427.0", + "@aws-sdk/credential-provider-web-identity": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -500,14 +420,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.523.0.tgz", - "integrity": "sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.425.0.tgz", + "integrity": "sha512-YY6tkLdvtb1Fgofp3b1UWO+5vwS14LJ/smGmuGpSba0V7gFJRdcrJ9bcb9vVgAGuMdjzRJ+bUKlLLtqXkaykEw==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.3.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -515,16 +436,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.529.1.tgz", - "integrity": "sha512-KFMKkaoTGDgSJG+o9Ii7AglWG5JQeF6IFw9cXLMwDdIrp3KUmRcUIqe0cjOoCqeQEDGy0VHsimHmKKJ3894i/A==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.427.0.tgz", + "integrity": "sha512-c+tXyS/i49erHs4bAp6vKNYeYlyQ0VNMBgoco0LCn1rL0REtHbfhWMnqDLF6c2n3yIWDOTrQu0D73Idnpy16eA==", + "peer": true, "dependencies": { - "@aws-sdk/client-sso": "3.529.1", - "@aws-sdk/token-providers": "3.529.1", - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.3.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/client-sso": "3.427.0", + "@aws-sdk/token-providers": "3.427.0", + "@aws-sdk/types": "3.425.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -532,14 +454,14 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.529.1.tgz", - "integrity": "sha512-AGuZDOKN+AttjwTjrF47WLqzeEut2YynyxjkXZhxZF/xn8i5Y51kUAUdXsXw1bgR25pAeXQIdhsrQlRa1Pm5kw==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.425.0.tgz", + "integrity": "sha512-/0R65TgRzL01JU3SzloivWNwdkbIhr06uY/F5pBHf/DynQqaspKNfdHn6AiozgSVDfwRHFjKBTUy6wvf3QFkuA==", + "peer": true, "dependencies": { - "@aws-sdk/client-sts": "3.529.1", - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -584,16 +506,17 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.525.0.tgz", - "integrity": "sha512-nYfQ2Xspfef7j8mZO7varUWLPH6HQlXateH7tBVtBNUAazyQE4UJEvC0fbQ+Y01e+FKlirim/m2umkdMXqAlTg==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.425.0.tgz", + "integrity": "sha512-7UTfA10fmDw9cgHLApxRUNPywZTG4S/1TNZgTxndO/1OM9ZHtIatw1iLbqJD35gHrpEYI8Vo14YvcnD2ITuiMw==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", - "@smithy/util-config-provider": "^2.2.1", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-arn-parser": "3.310.0", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", + "@smithy/util-config-provider": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -601,13 +524,14 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.523.0.tgz", - "integrity": "sha512-E5DyRAHU39VHaAlQLqXYS/IKpgk3vsryuU6kkOcIIK8Dgw0a2tjoh5AOCaNa8pD+KgAGrFp35JIMSX1zui5diA==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.425.0.tgz", + "integrity": "sha512-CqAmnDST2o7+sKKw2/ffHKiYKE+jZb/Ce9U0P//ZYzqp9R1Wb016ID+W6DoxufyPJAS9dpRMcUDnAssmMIC/EA==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -615,17 +539,18 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.523.0.tgz", - "integrity": "sha512-lIa1TdWY9q4zsDFarfSnYcdrwPR+nypaU4n6hb95i620/1F5M5s6H8P0hYtwTNNvx+slrR8F3VBML9pjBtzAHw==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.425.0.tgz", + "integrity": "sha512-BDwn2vVVsC/AzmHXQlaZhEpKXL7GfKFpH7ZFccZuwEQBcyn8lVCcwtfaRe5P1mEe2wklVzOXd1dw8bt0+BOUPA==", + "peer": true, "dependencies": { "@aws-crypto/crc32": "3.0.0", "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.523.0", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", - "@smithy/util-utf8": "^2.1.1", + "@aws-sdk/types": "3.425.0", + "@smithy/is-array-buffer": "^2.0.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -633,13 +558,14 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.523.0.tgz", - "integrity": "sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.425.0.tgz", + "integrity": "sha512-E5Gt41LObQ+cr8QnLthwsH3MtVSNXy1AKJMowDr85h0vzqA/FHUkgHyOGntgozzjXT5M0MaSRYxS0xwTR5D4Ew==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -647,12 +573,13 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.523.0.tgz", - "integrity": "sha512-1QAUXX3U0jkARnU0yyjk81EO4Uw5dCeQOtvUY5s3bUOHatR3ThosQeIr6y9BCsbXHzNnDe1ytCjqAPyo8r/bYw==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.425.0.tgz", + "integrity": "sha512-3rt0LpGmL1LCRFuEObS1yERd9OEV+AEIAvhY7b53M7u7SyrjWQtpntWkI365L/QljhgMXQBfps2qO4JtrhQnsA==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -660,12 +587,13 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.523.0.tgz", - "integrity": "sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.425.0.tgz", + "integrity": "sha512-INE9XWRXx2f4a/r2vOU0tAmgctVp7nEaEasemNtVBYhqbKLZvr9ndLBSgKGgJ8LIcXAoISipaMuFiqIGkFsm7A==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -673,13 +601,14 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.523.0.tgz", - "integrity": "sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.425.0.tgz", + "integrity": "sha512-77gnzJ5b91bgD75L/ugpOyerx6lR3oyS4080X1YI58EzdyBMkDrHM4FbMcY2RynETi3lwXCFzLRyZjWXY1mRlw==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -687,18 +616,31 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.525.0.tgz", - "integrity": "sha512-ewFyyFM6wdFTOqCiId5GQNi7owDdLEonQhB4h8tF6r3HV52bRlDvZA4aDos+ft6N/XY2J6L0qlFTFq+/oiurXw==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.427.0.tgz", + "integrity": "sha512-virGCf9vsqYCLpmngLOZOVSYgVr2cCOCvTuRoT9vf5tD/63JwaC173jnbdoJO6CWI7ID5Iz0eNdgITXVQ2mpew==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/protocol-http": "^3.2.1", - "@smithy/signature-v4": "^2.1.3", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", - "@smithy/util-config-provider": "^2.2.1", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-arn-parser": "3.310.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/smithy-client": "^2.1.9", + "@smithy/types": "^2.3.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.425.0.tgz", + "integrity": "sha512-JFojrg76oKAoBknnr9EL5N2aJ1mRCtBqXoZYST58GSx8uYdFQ89qS65VNQ8JviBXzsrCNAn4vDhZ5Ch5E6TxGQ==", + "peer": true, + "dependencies": { + "@aws-sdk/middleware-signing": "3.425.0", + "@aws-sdk/types": "3.425.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -706,16 +648,17 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.523.0.tgz", - "integrity": "sha512-pFXV4don6qcmew/OvEjLUr2foVjzoJ8o5k57Oz9yAHz8INx3RHK8MP/K4mVhHo6n0SquRcWrm4kY/Tw+89gkEA==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.425.0.tgz", + "integrity": "sha512-ZpOfgJHk7ovQ0sSwg3tU4NxFOnz53lJlkJRf7S+wxQALHM0P2MJ6LYBrZaFMVsKiJxNIdZBXD6jclgHg72ZW6Q==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/protocol-http": "^3.2.1", - "@smithy/signature-v4": "^2.1.3", - "@smithy/types": "^2.10.1", - "@smithy/util-middleware": "^2.1.3", + "@aws-sdk/types": "3.425.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.3.4", + "@smithy/util-middleware": "^2.0.3", "tslib": "^2.5.0" }, "engines": { @@ -723,12 +666,13 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.523.0.tgz", - "integrity": "sha512-FaqAZQeF5cQzZLOIboIJRaWVOQ2F2pJZAXGF5D7nJsxYNFChotA0O0iWimBRxU35RNn7yirVxz35zQzs20ddIw==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.425.0.tgz", + "integrity": "sha512-9HTuXnHYAZWkwPC8x9tElsQjFPxDT//orbIFauS7VF5HkLCKn9J6O6lW1wKMxrEnDwfN/Vi3nw479MoPj5Ss0Q==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -736,14 +680,15 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.525.0.tgz", - "integrity": "sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.427.0.tgz", + "integrity": "sha512-y9HxYsNvnA3KqDl8w1jHeCwz4P9CuBEtu/G+KYffLeAMBsMZmh4SIkFFCO9wE/dyYg6+yo07rYcnnIfy7WA0bw==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-endpoints": "3.525.0", - "@smithy/protocol-http": "^3.2.1", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-endpoints": "3.427.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -751,33 +696,15 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.525.0.tgz", - "integrity": "sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.425.0.tgz", + "integrity": "sha512-u7uv/iUOapIJdRgRkO3wnpYsUgV6ponsZJQgVg/8L+n+Vo5PQL5gAcIuAOwcYSKQPFaeK+KbmByI4SyOK203Vw==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/types": "^2.10.1", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.3", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.529.1.tgz", - "integrity": "sha512-54nNN/LjqlyUDTLO3U9D7xkYK4/UttcqfKoHQuPI6QabqZGT1hMFs5SzsyihNchgxci6ZTo4pqQQ3lGfE/HHOA==", - "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@aws-sdk/util-format-url": "3.523.0", - "@smithy/middleware-endpoint": "^2.4.4", - "@smithy/protocol-http": "^3.2.1", - "@smithy/smithy-client": "^2.4.2", - "@smithy/types": "^2.10.1", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/types": "^2.3.4", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.3", "tslib": "^2.5.0" }, "engines": { @@ -785,15 +712,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.525.0.tgz", - "integrity": "sha512-j8gkdfiokaherRgokfZBl2azYBMHlegT7pOnR/3Y79TSz6G+bJeIkuNk8aUbJArr6R8nvAM1j4dt1rBM+efolQ==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.425.0.tgz", + "integrity": "sha512-7n2FRPE9rLaVa26xXQJ8TExrt53dWN824axQd1a0r5va0SmMQYG/iV5LBmwUlAntUSq46Lse4Q5YnbOVedGOmw==", + "peer": true, "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.525.0", - "@aws-sdk/types": "3.523.0", - "@smithy/protocol-http": "^3.2.1", - "@smithy/signature-v4": "^2.1.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -801,15 +728,45 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.529.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.529.1.tgz", - "integrity": "sha512-NpgMjsfpqiugbxrYGXtta914N43Mx/H0niidqv8wKMTgWQEtsJvYtOni+kuLXB+LmpjaMFNlpadooFU/bK4buA==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.427.0.tgz", + "integrity": "sha512-4E5E+4p8lJ69PBY400dJXF06LUHYx5lkKzBEsYqWWhoZcoftrvi24ltIhUDoGVLkrLcTHZIWSdFAWSos4hXqeg==", + "peer": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.529.1", - "@aws-sdk/types": "3.523.0", - "@smithy/property-provider": "^2.1.3", - "@smithy/shared-ini-file-loader": "^2.3.3", - "@smithy/types": "^2.10.1", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.425.0", + "@aws-sdk/middleware-logger": "3.425.0", + "@aws-sdk/middleware-recursion-detection": "3.425.0", + "@aws-sdk/middleware-user-agent": "3.427.0", + "@aws-sdk/types": "3.425.0", + "@aws-sdk/util-endpoints": "3.427.0", + "@aws-sdk/util-user-agent-browser": "3.425.0", + "@aws-sdk/util-user-agent-node": "3.425.0", + "@smithy/config-resolver": "^2.0.11", + "@smithy/fetch-http-handler": "^2.2.1", + "@smithy/hash-node": "^2.0.10", + "@smithy/invalid-dependency": "^2.0.10", + "@smithy/middleware-content-length": "^2.0.12", + "@smithy/middleware-endpoint": "^2.0.10", + "@smithy/middleware-retry": "^2.0.13", + "@smithy/middleware-serde": "^2.0.10", + "@smithy/middleware-stack": "^2.0.4", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/node-http-handler": "^2.1.6", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.6", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/smithy-client": "^2.1.9", + "@smithy/types": "^2.3.4", + "@smithy/url-parser": "^2.0.10", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.13", + "@smithy/util-defaults-mode-node": "^2.0.15", + "@smithy/util-retry": "^2.0.3", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -817,11 +774,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.523.0.tgz", - "integrity": "sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.425.0.tgz", + "integrity": "sha512-6lqbmorwerN4v+J5dqbHPAsjynI0mkEF+blf+69QTaKKGaxBBVaXgqoqul9RXYcK5MMrrYRbQIMd0zYOoy90kA==", + "peer": true, "dependencies": { - "@smithy/types": "^2.10.1", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -829,9 +787,10 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.495.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz", - "integrity": "sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz", + "integrity": "sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==", + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -840,27 +799,13 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.525.0.tgz", - "integrity": "sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==", + "version": "3.427.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.427.0.tgz", + "integrity": "sha512-rSyiAIFF/EVvity/+LWUqoTMJ0a25RAc9iqx0WZ4tf1UjuEXRRXxZEb+jEZg1bk+pY84gdLdx9z5E+MSJCZxNQ==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/types": "^2.10.1", - "@smithy/util-endpoints": "^1.1.4", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-format-url": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.523.0.tgz", - "integrity": "sha512-OWi+8bsEfxG4DvHkWauxyWVZMbYrezC49DbGDEu1lJgk9eqQALlyGkZHt9O8KKfyT/mdqQbR8qbpkxqYcGuHVA==", - "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/querystring-builder": "^2.1.3", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/node-config-provider": "^2.0.13", "tslib": "^2.5.0" }, "engines": { @@ -871,6 +816,7 @@ "version": "3.310.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -879,24 +825,26 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.523.0.tgz", - "integrity": "sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.425.0.tgz", + "integrity": "sha512-22Y9iMtjGcFjGILR6/xdp1qRezlHVLyXtnpEsbuPTiernRCPk6zfAnK/ATH77r02MUjU057tdxVkd5umUBTn9Q==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/types": "^2.3.4", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.525.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.525.0.tgz", - "integrity": "sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==", + "version": "3.425.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.425.0.tgz", + "integrity": "sha512-SIR4F5uQeeVAi8lv4OgRirtdtNi5zeyogTuQgGi9su8F/WP1N6JqxofcwpUY5f8/oJ2UlXr/tx1f09UHfJJzvA==", + "peer": true, "dependencies": { - "@aws-sdk/types": "3.523.0", - "@smithy/node-config-provider": "^2.2.4", - "@smithy/types": "^2.10.1", + "@aws-sdk/types": "3.425.0", + "@smithy/node-config-provider": "^2.0.13", + "@smithy/types": "^2.3.4", "tslib": "^2.5.0" }, "engines": { @@ -915,16 +863,17 @@ "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "peer": true, "dependencies": { "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.523.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.523.0.tgz", - "integrity": "sha512-wfvyVymj2TUw7SuDor9IuFcAzJZvWRBZotvY/wQJOlYa3UP3Oezzecy64N4FWfBJEsZdrTN+HOZFl+IzTWWnUA==", + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz", + "integrity": "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==", + "peer": true, "dependencies": { - "@smithy/types": "^2.10.1", "tslib": "^2.5.0" }, "engines": { @@ -1343,9 +1292,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1457,15 +1406,15 @@ "dev": true }, "node_modules/@emotion/react": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", - "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", "dev": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", + "@emotion/serialize": "^1.1.2", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1", "@emotion/weak-memoize": "^0.3.1", @@ -1481,9 +1430,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", - "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dev": true, "dependencies": { "@emotion/hash": "^0.9.1", @@ -1555,6 +1504,246 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "dev": true }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-x64": { "version": "0.19.8", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", @@ -1571,32 +1760,128 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", "dev": true, "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.1.3" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", - "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", "dev": true, "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.1" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", "dev": true, "dependencies": { - "@floating-ui/dom": "^1.6.1" + "@floating-ui/dom": "^1.5.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -1604,9 +1889,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==", "dev": true }, "node_modules/@formatjs/ecma402-abstract": { @@ -1914,17 +2199,17 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz", - "integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==", + "version": "5.0.0-beta.26", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz", + "integrity": "sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", - "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", + "@babel/runtime": "^7.23.4", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", "@popperjs/core": "^2.11.8", - "clsx": "^2.1.0", + "clsx": "^2.0.0", "prop-types": "^15.8.1" }, "engines": { @@ -1946,9 +2231,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.9.tgz", - "integrity": "sha512-CSDpVevGaxsvMkiYBZ8ztki1z/eT0mM2MqUT21eCRiMz3DU4zQw5rXG5ML/yTuJF9Z2Wv9SliIeaRAuSR/9Nig==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.20.tgz", + "integrity": "sha512-fXoGe8VOrIYajqALysFuyal1q1YmBARqJ3tmnWYDVl0scu8f6h6tZQbS2K8BY28QwkWNGyv4WRfuUkzN5HR3Ow==", "dev": true, "funding": { "type": "opencollective", @@ -1956,12 +2241,12 @@ } }, "node_modules/@mui/icons-material": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.9.tgz", - "integrity": "sha512-6tLQoM6RylQuDnHR6qQay0G0pJgKmrhn5MIm0IfrwtmSO8eV5iUFR+nNUTXsWa24gt7ZbIKnJ962UlYaeXa4bg==", + "version": "5.14.19", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.19.tgz", + "integrity": "sha512-yjP8nluXxZGe3Y7pS+yxBV+hWZSsSBampCxkZwaw+1l+feL+rfP74vbEFbMrX/Kil9I/Y1tWfy5bs/eNvwNpWw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9" + "@babel/runtime": "^7.23.4" }, "engines": { "node": ">=12.0.0" @@ -1982,20 +2267,20 @@ } }, "node_modules/@mui/material": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.9.tgz", - "integrity": "sha512-kbHTZDcFmN8GHKzRpImUEl9AJfFWI/0Kl+DsYVT3kHzQWUuHiKm3uHXR1RCOqr7H8IgHFPdbxItmCSQ/mj7zgg==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.20.tgz", + "integrity": "sha512-SUcPZnN6e0h1AtrDktEl76Dsyo/7pyEUQ+SAVe9XhHg/iliA0b4Vo+Eg4HbNkELsMbpDsUF4WHp7rgflPG7qYQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.36", - "@mui/core-downloads-tracker": "^5.15.9", - "@mui/system": "^5.15.9", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", - "csstype": "^3.1.3", + "@babel/runtime": "^7.23.4", + "@mui/base": "5.0.0-beta.26", + "@mui/core-downloads-tracker": "^5.14.20", + "@mui/system": "^5.14.20", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@types/react-transition-group": "^4.4.9", + "clsx": "^2.0.0", + "csstype": "^3.1.2", "prop-types": "^15.8.1", "react-is": "^18.2.0", "react-transition-group": "^4.4.5" @@ -2027,13 +2312,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.9.tgz", - "integrity": "sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.20.tgz", + "integrity": "sha512-WV560e1vhs2IHCh0pgUaWHznrcrVoW9+cDCahU1VTkuwPokWVvb71ccWQ1f8Y3tRBPPcNkU2dChkkRJChLmQlQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.15.9", + "@babel/runtime": "^7.23.4", + "@mui/utils": "^5.14.20", "prop-types": "^15.8.1" }, "engines": { @@ -2054,14 +2339,14 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.9.tgz", - "integrity": "sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.20.tgz", + "integrity": "sha512-Vs4nGptd9wRslo9zeRkuWcZeIEp+oYbODy+fiZKqqr4CH1Gfi9fdP0Q1tGYk8OiJ2EPB/tZSAyOy62Hyp/iP7g==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", + "@babel/runtime": "^7.23.4", "@emotion/cache": "^11.11.0", - "csstype": "^3.1.3", + "csstype": "^3.1.2", "prop-types": "^15.8.1" }, "engines": { @@ -2086,18 +2371,18 @@ } }, "node_modules/@mui/system": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.9.tgz", - "integrity": "sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.20.tgz", + "integrity": "sha512-jKOGtK4VfYZG5kdaryUHss4X6hzcfh0AihT8gmnkfqRtWP7xjY+vPaUhhuSeibE5sqA5wCtdY75z6ep9pxFnIg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.15.9", - "@mui/styled-engine": "^5.15.9", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", - "clsx": "^2.1.0", - "csstype": "^3.1.3", + "@babel/runtime": "^7.23.4", + "@mui/private-theming": "^5.14.20", + "@mui/styled-engine": "^5.14.19", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "clsx": "^2.0.0", + "csstype": "^3.1.2", "prop-types": "^15.8.1" }, "engines": { @@ -2126,9 +2411,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", + "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", "dev": true, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" @@ -2140,12 +2425,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.9.tgz", - "integrity": "sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.20.tgz", + "integrity": "sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.23.9", + "@babel/runtime": "^7.23.4", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" @@ -2189,6 +2474,12 @@ "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==", "dev": true }, + "node_modules/@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==", + "dev": true + }, "node_modules/@reduxjs/toolkit": { "version": "1.9.7", "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", @@ -2214,14 +2505,118 @@ } }, "node_modules/@remix-run/router": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.0.tgz", - "integrity": "sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", "dev": true, "engines": { "node": ">=14.0.0" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.7.0.tgz", + "integrity": "sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.7.0.tgz", + "integrity": "sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.7.0.tgz", + "integrity": "sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.7.0.tgz", + "integrity": "sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.7.0.tgz", + "integrity": "sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.7.0.tgz", + "integrity": "sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.7.0.tgz", + "integrity": "sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.7.0.tgz", + "integrity": "sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.7.0.tgz", @@ -2248,12 +2643,51 @@ "linux" ] }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.7.0.tgz", + "integrity": "sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.7.0.tgz", + "integrity": "sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.7.0.tgz", + "integrity": "sha512-SeZzC2QhhdBQUm3U0c8+c/P6UlRyBcLL2Xp5KX7z46WXZxzR8RJSIWL9wSUeBTgxog5LTPJuPj0WOT9lvrtP7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@smithy/abort-controller": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.4.tgz", - "integrity": "sha512-66HO817oIZ2otLIqy06R5muapqZjkgF1jfU0wyNko8cuqZNu8nbS9ljlhcRYw/M/uWRJzB9ih81DLSHhYbBLlQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.11.tgz", + "integrity": "sha512-MSzE1qR2JNyb7ot3blIOT3O3H0Jn06iNDEgHRaqZUwBgx5EG+VIx24Y21tlKofzYryIOcWpIohLrIIyocD6LMA==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2261,49 +2695,34 @@ } }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz", - "integrity": "sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", + "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "peer": true, "dependencies": { "tslib": "^2.5.0" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.2.tgz", - "integrity": "sha512-KwR9fFc/t5jH9RQFbrA9DHSmI+URTmB4v+i7H08UNET9AcN6GGBTBMiDKpA56Crw6CN7cSaSDXaRS/AsfOuupQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.0.tgz", + "integrity": "sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==", + "peer": true, "dependencies": { - "@smithy/util-base64": "^2.2.0", + "@smithy/util-base64": "^2.0.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/config-resolver": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.5.tgz", - "integrity": "sha512-LcBB5JQC3Tx2ZExIJzfvWaajhFIwHrUNQeqxhred2r5nnqrdly9uoCrvM1sxOOdghYuWWm2Kr8tBCDOmxsgeTA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.14.tgz", + "integrity": "sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==", + "peer": true, "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/types": "^2.11.0", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.4", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.7.tgz", - "integrity": "sha512-zHrrstOO78g+/rOJoHi4j3mGUBtsljRhcKNzloWPv1XIwgcFUi+F1YFKr2qPQ3z7Ls5dNc4L2SPrVarNFIQqog==", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.6", - "@smithy/middleware-retry": "^2.1.6", - "@smithy/middleware-serde": "^2.2.1", - "@smithy/protocol-http": "^3.2.2", - "@smithy/smithy-client": "^2.4.4", - "@smithy/types": "^2.11.0", - "@smithy/util-middleware": "^2.1.4", + "@smithy/node-config-provider": "^2.1.1", + "@smithy/types": "^2.3.5", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.4", "tslib": "^2.5.0" }, "engines": { @@ -2311,14 +2730,15 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.6.tgz", - "integrity": "sha512-+xQe4Pite0kdk9qn0Vyw5BRVh0iSlj+T4TEKRXr4E1wZKtVgIzGlkCrfICSjiPVFkPxk4jMpVboMYdEiiA88/w==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.16.tgz", + "integrity": "sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==", + "peer": true, "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/property-provider": "^2.1.4", - "@smithy/types": "^2.11.0", - "@smithy/url-parser": "^2.1.4", + "@smithy/node-config-provider": "^2.1.1", + "@smithy/property-provider": "^2.0.12", + "@smithy/types": "^2.3.5", + "@smithy/url-parser": "^2.0.11", "tslib": "^2.5.0" }, "engines": { @@ -2326,23 +2746,25 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.4.tgz", - "integrity": "sha512-UkiieTztP7adg8EuqZvB0Y4LewdleZCJU7Kgt9RDutMsRYqO32fMpWeQHeTHaIMosmzcRZUykMRrhwGJe9mP3A==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.11.tgz", + "integrity": "sha512-BQCTjxhCYRZIfXapa2LmZSaH8QUBGwMZw7XRN83hrdixbLjIcj+o549zjkedFS07Ve2TlvWUI6BTzP+nv7snBA==", + "peer": true, "dependencies": { "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.11.0", - "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/types": "^2.3.5", + "@smithy/util-hex-encoding": "^2.0.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.4.tgz", - "integrity": "sha512-K0SyvrUu/vARKzNW+Wp9HImiC/cJ6K88/n7FTH1slY+MErdKoiSbRLaXbJ9qD6x1Hu28cplHMlhADwZelUx/Ww==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.11.tgz", + "integrity": "sha512-p9IK4uvwT6B3pT1VGlODvcVBfPVikjBFHAcKpvvNF+7lAEI+YiC6d0SROPkpjnvCgVBYyGXa3ciqrWnFze6mwQ==", + "peer": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/eventstream-serde-universal": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2350,11 +2772,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.4.tgz", - "integrity": "sha512-FH+2AwOwZ0kHPB9sciWJtUqx81V4vizfT3P6T9eslmIC2hi8ch/KFvQlF7jDmwR1aLlPlq6qqLKLqzK/71Ki4A==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.11.tgz", + "integrity": "sha512-vN32E8yExo0Z8L7kXhlU9KRURrhqOpPdLxQMp3MwfMThrjiqbr1Sk5srUXc1ed2Ygl/l0TEN9vwNG0bQHg6AjQ==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2362,12 +2785,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.4.tgz", - "integrity": "sha512-gsc5ZTvVcB9sleLQzsK/rOhgn52+AAsmhEr41WDwAcctccBjh429+b8gT9t+SU8QyajypfsLOZfJQu0+zE515Q==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.11.tgz", + "integrity": "sha512-Gjqbpg7UmD+YzkpgNShNcDNZcUpBWIkvX2XCGptz5PoxJU/UQbuF9eSc93ZlIb7j4aGjtFfqk23HUMW8Hopg2Q==", + "peer": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/eventstream-serde-universal": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2375,12 +2799,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.4.tgz", - "integrity": "sha512-NKLAsYnZA5s+ntipJRKo1RrRbhYHrsEnmiUoz0EhVYrAih+UELY9sKR+A1ujGaFm3nKDs5fPfiozC2wpXq2zUA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.11.tgz", + "integrity": "sha512-F8FsxLTbFN4+Esgpo+nNKcEajrgRZJ+pG9c8+MhLM4Odp5ejLHw2GMCXd81cGsgmfcbnzdDEXazPPVzOwj89MQ==", + "peer": true, "dependencies": { - "@smithy/eventstream-codec": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/eventstream-codec": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2388,36 +2813,38 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.4.tgz", - "integrity": "sha512-DSUtmsnIx26tPuyyrK49dk2DAhPgEw6xRW7V62nMHIB5dk3NqhGnwcKO2fMdt/l3NUVgia34ZsSJA8bD+3nh7g==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.2.tgz", + "integrity": "sha512-K7aRtRuaBjzlk+jWWeyfDTLAmRRvmA4fU8eHUXtjsuEDgi3f356ZE32VD2ssxIH13RCLVZbXMt5h7wHzYiSuVA==", "dependencies": { - "@smithy/protocol-http": "^3.2.2", - "@smithy/querystring-builder": "^2.1.4", - "@smithy/types": "^2.11.0", - "@smithy/util-base64": "^2.2.0", + "@smithy/protocol-http": "^3.0.7", + "@smithy/querystring-builder": "^2.0.11", + "@smithy/types": "^2.3.5", + "@smithy/util-base64": "^2.0.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.4.tgz", - "integrity": "sha512-bDugS1DortnriGDdp0sqdq7dLI5if8CEOF9rKtpJa1ZYMq6fxOtTId//dlilS5QgUtUs6GHN5aMQVxEjhBzzQA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.11.tgz", + "integrity": "sha512-/6vq/NiH2EN3mWdwcLdjVohP+VCng+ZA1GnlUdx959egsfgIlLWQvCyjnB2ze9Hr6VHV5XEFLLpLQH2dHA6Sgw==", + "peer": true, "dependencies": { - "@smithy/chunked-blob-reader": "^2.1.1", - "@smithy/chunked-blob-reader-native": "^2.1.2", - "@smithy/types": "^2.11.0", + "@smithy/chunked-blob-reader": "^2.0.0", + "@smithy/chunked-blob-reader-native": "^2.0.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" } }, "node_modules/@smithy/hash-node": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.4.tgz", - "integrity": "sha512-uvCcpDLXaTTL0X/9ezF8T8sS77UglTfZVQaUOBiCvR0QydeSyio3t0Hj3QooVdyFsKTubR8gCk/ubLk3vAyDng==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.11.tgz", + "integrity": "sha512-PbleVugN2tbhl1ZoNWVrZ1oTFFas/Hq+s6zGO8B9bv4w/StTriTKA9W+xZJACOj9X7zwfoTLbscM+avCB1KqOQ==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", + "@smithy/types": "^2.3.5", + "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2425,12 +2852,13 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.1.4.tgz", - "integrity": "sha512-HcDQRs/Fcx7lwAd+/vSW/e7ltdh148D2Pq7XI61CEWcOoQdQ0W8aYBHDRC4zjtXv6hySdmWE+vo3dvdTt7aj8A==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.11.tgz", + "integrity": "sha512-Jn2yl+Dn0kvwKvSavvR1/BFVYa2wIkaJKWeTH48kno89gqHAJxMh1hrtBN6SJ7F8VhodNZTiNOlQVqCSfLheNQ==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", - "@smithy/util-utf8": "^2.2.0", + "@smithy/types": "^2.3.5", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2438,18 +2866,19 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.4.tgz", - "integrity": "sha512-QzlNBl6jt3nb9jNnE51wTegReVvUdozyMMrFEyb/rc6AzPID1O+qMJYjAAoNw098y0CZVfCpEnoK2+mfBOd8XA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.11.tgz", + "integrity": "sha512-zazq99ujxYv/NOf9zh7xXbNgzoVLsqE0wle8P/1zU/XdhPi/0zohTPKWUzIxjGdqb5hkkwfBkNkl5H+LE0mvgw==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", - "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", + "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", "dependencies": { "tslib": "^2.5.0" }, @@ -2458,22 +2887,24 @@ } }, "node_modules/@smithy/md5-js": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.1.4.tgz", - "integrity": "sha512-WHTnnYJPKE7Sy49DogLuox42TnlwD3cQ6TObPD6WFWjKocWIdpEpIvdJHwWUfSFf0JIi8ON8z6ZEhsnyKVCcLQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.11.tgz", + "integrity": "sha512-YBIv+e95qeGvQA05ucwstmTeQ/bUzWgU+nO2Ffmif5awu6IzSR0Jfk3XLYh4mdy7f8DCgsn8qA63u7N9Lu0+5A==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", - "@smithy/util-utf8": "^2.2.0", + "@smithy/types": "^2.3.5", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.4.tgz", - "integrity": "sha512-C6VRwfcr0w9qRFhDGCpWMVhlEIBFlmlPRP1aX9Cv9xDj9SUwlDrNvoV1oP1vjRYuLxCDgovBBynCwwcluS2wLw==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.13.tgz", + "integrity": "sha512-Md2kxWpaec3bXp1oERFPQPBhOXCkGSAF7uc1E+4rkwjgw3/tqAXRtbjbggu67HJdwaif76As8AV6XxbD1HzqTQ==", + "peer": true, "dependencies": { - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", + "@smithy/protocol-http": "^3.0.7", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2481,16 +2912,14 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.6.tgz", - "integrity": "sha512-AsXtUXHPOAS0EGZUSFOsVJvc7p0KL29PGkLxLfycPOcFVLru/oinYB6yvyL73ZZPX2OB8sMYUMrj7eH2kI7V/w==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.11.tgz", + "integrity": "sha512-mCugsvB15up6fqpzUEpMT4CuJmFkEI+KcozA7QMzYguXCaIilyMKsyxgamwmr+o7lo3QdjN0//XLQ9bWFL129g==", "dependencies": { - "@smithy/middleware-serde": "^2.2.1", - "@smithy/node-config-provider": "^2.2.5", - "@smithy/shared-ini-file-loader": "^2.3.5", - "@smithy/types": "^2.11.0", - "@smithy/url-parser": "^2.1.4", - "@smithy/util-middleware": "^2.1.4", + "@smithy/middleware-serde": "^2.0.11", + "@smithy/types": "^2.3.5", + "@smithy/url-parser": "^2.0.11", + "@smithy/util-middleware": "^2.0.4", "tslib": "^2.5.0" }, "engines": { @@ -2498,17 +2927,17 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.6.tgz", - "integrity": "sha512-khpSV0NxqMHfa06kfG4WYv+978sVvfTFmn0hIFKKwOXtIxyYtPKiQWFT4nnwZD07fGdYGbtCBu3YALc8SsA5mA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.16.tgz", + "integrity": "sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==", + "peer": true, "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/protocol-http": "^3.2.2", - "@smithy/service-error-classification": "^2.1.4", - "@smithy/smithy-client": "^2.4.4", - "@smithy/types": "^2.11.0", - "@smithy/util-middleware": "^2.1.4", - "@smithy/util-retry": "^2.1.4", + "@smithy/node-config-provider": "^2.1.1", + "@smithy/protocol-http": "^3.0.7", + "@smithy/service-error-classification": "^2.0.4", + "@smithy/types": "^2.3.5", + "@smithy/util-middleware": "^2.0.4", + "@smithy/util-retry": "^2.0.4", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -2520,16 +2949,17 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.2.1.tgz", - "integrity": "sha512-VAWRWqnNjgccebndpyK94om4ZTYzXLQxUmNCXYzM/3O9MTfQjTNBgtFtQwyIIez6z7LWcCsXmnKVIOE9mLqAHQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.11.tgz", + "integrity": "sha512-NuxnjMyf4zQqhwwdh0OTj5RqpnuT6HcH5Xg5GrPijPcKzc2REXVEVK4Yyk8ckj8ez1XSj/bCmJ+oNjmqB02GWA==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2537,11 +2967,11 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.4.tgz", - "integrity": "sha512-Qqs2ba8Ax1rGKOSGJS2JN23fhhox2WMdRuzx0NYHtXzhxbJOIMmz9uQY6Hf4PY8FPteBPp1+h0j5Fmr+oW12sg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.5.tgz", + "integrity": "sha512-bVQU/rZzBY7CbSxIrDTGZYnBWKtIw+PL/cRc9B7etZk1IKSOe0NvKMJyWllfhfhrTeMF6eleCzOihIQympAvPw==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2549,13 +2979,14 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.5.tgz", - "integrity": "sha512-CxPf2CXhjO79IypHJLBATB66Dw6suvr1Yc2ccY39hpR6wdse3pZ3E8RF83SODiNH0Wjmkd0ze4OF8exugEixgA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.1.tgz", + "integrity": "sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==", + "peer": true, "dependencies": { - "@smithy/property-provider": "^2.1.4", - "@smithy/shared-ini-file-loader": "^2.3.5", - "@smithy/types": "^2.11.0", + "@smithy/property-provider": "^2.0.12", + "@smithy/shared-ini-file-loader": "^2.2.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2563,14 +2994,14 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.2.tgz", - "integrity": "sha512-yrj3c1g145uiK5io+1UPbJAHo8BSGORkBzrmzvAsOmBKb+1p3jmM8ZwNLDH/HTTxVLm9iM5rMszx+iAh1HUC4Q==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.7.tgz", + "integrity": "sha512-PQIKZXlp3awCDn/xNlCSTFE7aYG/5Tx33M05NfQmWYeB5yV1GZZOSz4dXpwiNJYTXb9jPqjl+ueXXkwtEluFFA==", "dependencies": { - "@smithy/abort-controller": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/querystring-builder": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/abort-controller": "^2.0.11", + "@smithy/protocol-http": "^3.0.7", + "@smithy/querystring-builder": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2578,11 +3009,12 @@ } }, "node_modules/@smithy/property-provider": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.4.tgz", - "integrity": "sha512-nWaY/MImj1BiXZ9WY65h45dcxOx8pl06KYoHxwojDxDL+Q9yLU1YnZpgv8zsHhEftlj9KhePENjQTlNowWVyug==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.12.tgz", + "integrity": "sha512-Un/OvvuQ1Kg8WYtoMCicfsFFuHb/TKL3pCA6ZIo/WvNTJTR94RtoRnL7mY4XkkUAoFMyf6KjcQJ76y1FX7S5rw==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2590,11 +3022,11 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.2.2.tgz", - "integrity": "sha512-xYBlllOQcOuLoxzhF2u8kRHhIFGQpDeTQj/dBSnw4kfI29WMKL5RnW1m9YjnJAJ49miuIvrkJR+gW5bCQ+Mchw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.7.tgz", + "integrity": "sha512-HnZW8y+r66ntYueCDbLqKwWcMNWW8o3eVpSrHNluwtBJ/EUWfQHRKSiu6vZZtc6PGfPQWgVfucoCE/C3QufMAA==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2602,12 +3034,12 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.4.tgz", - "integrity": "sha512-LXSL0J/nRWvGT+jIj+Fip3j0J1ZmHkUyBFRzg/4SmPNCLeDrtVu7ptKOnTboPsFZu5BxmpYok3kJuQzzRdrhbw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.11.tgz", + "integrity": "sha512-b4kEbVMxpmfv2VWUITn2otckTi7GlMteZQxi+jlwedoATOGEyrCJPfRcYQJjbCi3fZ2QTfh3PcORvB27+j38Yg==", "dependencies": { - "@smithy/types": "^2.11.0", - "@smithy/util-uri-escape": "^2.1.1", + "@smithy/types": "^2.3.5", + "@smithy/util-uri-escape": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2615,11 +3047,11 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.4.tgz", - "integrity": "sha512-U2b8olKXgZAs0eRo7Op11jTNmmcC/sqYmsA7vN6A+jkGnDvJlEl7AetUegbBzU8q3D6WzC5rhR/joIy8tXPzIg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.11.tgz", + "integrity": "sha512-YXe7jhi7s3dQ0Fu9dLoY/gLu6NCyy8tBWJL/v2c9i7/RLpHgKT+uT96/OqZkHizCJ4kr0ZD46tzMjql/o60KLg==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2627,22 +3059,24 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.4.tgz", - "integrity": "sha512-JW2Hthy21evnvDmYYk1kItOmbp3X5XI5iqorXgFEunb6hQfSDZ7O1g0Clyxg7k/Pcr9pfLk5xDIR2To/IohlsQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.4.tgz", + "integrity": "sha512-77506l12I5gxTZqBkx3Wb0RqMG81bMYLaVQ+EqIWFwQDJRs5UFeXogKxSKojCmz1wLUziHZQXm03MBzPQiumQw==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0" + "@smithy/types": "^2.3.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.5.tgz", - "integrity": "sha512-oI99+hOvsM8oAJtxAGmoL/YCcGXtbP0fjPseYGaNmJ4X5xOFTer0KPk7AIH3AL6c5AlYErivEi1X/X78HgTVIw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.0.tgz", + "integrity": "sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==", + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2650,17 +3084,18 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.4.tgz", - "integrity": "sha512-gnu9gCn0qQ8IdhNjs6o3QVCXzUs33znSDYwVMWo3nX4dM6j7z9u6FC302ShYyVWfO4MkVMuGCCJ6nl3PcH7V1Q==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.11.tgz", + "integrity": "sha512-EFVU1dT+2s8xi227l1A9O27edT/GNKvyAK6lZnIZ0zhIHq/jSLznvkk15aonGAM1kmhmZBVGpI7Tt0odueZK9A==", + "peer": true, "dependencies": { - "@smithy/eventstream-codec": "^2.1.4", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/types": "^2.11.0", - "@smithy/util-hex-encoding": "^2.1.1", - "@smithy/util-middleware": "^2.1.4", - "@smithy/util-uri-escape": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", + "@smithy/eventstream-codec": "^2.0.11", + "@smithy/is-array-buffer": "^2.0.0", + "@smithy/types": "^2.3.5", + "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/util-middleware": "^2.0.4", + "@smithy/util-uri-escape": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2668,15 +3103,13 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.4.4.tgz", - "integrity": "sha512-SNE17wjycPZIJ2P5sv6wMTteV/vQVPdaqQkoK1KeGoWHXx79t3iLhQXj1uqRdlkMUS9pXJrLOAS+VvUSOYwQKw==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.10.tgz", + "integrity": "sha512-2OEmZDiW1Z196QHuQZ5M6cBE8FCSG0H2HADP1G+DY8P3agsvb0YJyfhyKuJbxIQy15tr3eDAK6FOrlbxgKOOew==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.6", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", + "@smithy/middleware-stack": "^2.0.5", + "@smithy/types": "^2.3.5", + "@smithy/util-stream": "^2.0.15", "tslib": "^2.5.0" }, "engines": { @@ -2684,9 +3117,9 @@ } }, "node_modules/@smithy/types": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.11.0.tgz", - "integrity": "sha512-AR0SXO7FuAskfNhyGfSTThpLRntDI5bOrU0xrpVYU0rZyjl3LBXInZFMTP/NNSd7IS6Ksdtar0QvnrPRIhVrLQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.3.5.tgz", + "integrity": "sha512-ehyDt8M9hehyxrLQGoA1BGPou8Js1Ocoh5M0ngDhJMqbFmNK5N6Xhr9/ZExWkyIW8XcGkiMPq3ZUEE0ScrhbuQ==", "dependencies": { "tslib": "^2.5.0" }, @@ -2695,22 +3128,21 @@ } }, "node_modules/@smithy/url-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.4.tgz", - "integrity": "sha512-1hTy6UYRYqOZlHKH2/2NzdNQ4NNmW2Lp0sYYvztKy+dEQuLvZL9w88zCzFQqqFer3DMcscYOshImxkJTGdV+rg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.11.tgz", + "integrity": "sha512-h89yXMCCF+S5k9XIoKltMIWTYj+FcEkU/IIFZ6RtE222fskOTL4Iak6ZRG+ehSvZDt8yKEcxqheTDq7JvvtK3g==", "dependencies": { - "@smithy/querystring-parser": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/querystring-parser": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" } }, "node_modules/@smithy/util-base64": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.2.0.tgz", - "integrity": "sha512-RiQI/Txu0SxCR38Ky5BMEVaFfkNTBjpbxlr2UhhxggSmnsHDQPZJWMtPoXs7TWZaseslIlAWMiHmqRT3AV/P2w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.0.tgz", + "integrity": "sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==", "dependencies": { - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", + "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2718,17 +3150,19 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", - "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", + "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "peer": true, "dependencies": { "tslib": "^2.5.0" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", - "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", + "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -2737,11 +3171,11 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", - "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", + "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", "dependencies": { - "@smithy/is-array-buffer": "^2.1.1", + "@smithy/is-array-buffer": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2749,9 +3183,10 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", - "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", + "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "peer": true, "dependencies": { "tslib": "^2.5.0" }, @@ -2760,13 +3195,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.6.tgz", - "integrity": "sha512-lM2JMYCilrejfGf8WWnVfrKly3vf+mc5x9TrTpT++qIKP452uWfLqlaUxbz1TkSfhqm8RjrlY22589B9aI8A9w==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.14.tgz", + "integrity": "sha512-NupG7SWUucm3vJrvlpt9jG1XeoPJphjcivgcUUXhDJbUPy4F04LhlTiAhWSzwlCNcF8OJsMvZ/DWbpYD3pselw==", + "peer": true, "dependencies": { - "@smithy/property-provider": "^2.1.4", - "@smithy/smithy-client": "^2.4.4", - "@smithy/types": "^2.11.0", + "@smithy/property-provider": "^2.0.12", + "@smithy/smithy-client": "^2.1.10", + "@smithy/types": "^2.3.5", "bowser": "^2.11.0", "tslib": "^2.5.0" }, @@ -2775,39 +3211,27 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.2.6.tgz", - "integrity": "sha512-UmUbPHbkBJCXRFbq+FPLpVwiFPHj1oPWXJS2f2sy23PtXM94c9X5EceI6JKuKdBty+tzhrAs5JbmPM/HvmDB8Q==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.18.tgz", + "integrity": "sha512-+3jMom/b/Cdp21tDnY4vKu249Al+G/P0HbRbct7/aSZDlROzv1tksaYukon6UUv7uoHn+/McqnsvqZHLlqvQ0g==", + "peer": true, "dependencies": { - "@smithy/config-resolver": "^2.1.5", - "@smithy/credential-provider-imds": "^2.2.6", - "@smithy/node-config-provider": "^2.2.5", - "@smithy/property-provider": "^2.1.4", - "@smithy/smithy-client": "^2.4.4", - "@smithy/types": "^2.11.0", + "@smithy/config-resolver": "^2.0.14", + "@smithy/credential-provider-imds": "^2.0.16", + "@smithy/node-config-provider": "^2.1.1", + "@smithy/property-provider": "^2.0.12", + "@smithy/smithy-client": "^2.1.10", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-endpoints": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.5.tgz", - "integrity": "sha512-tgDpaUNsUtRvNiBulKU1VnpoXU1GINMfZZXunRhUXOTBEAufG1Wp79uDXLau2gg1RZ4dpAR6lXCkrmddihCGUg==", - "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", - "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", + "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", "dependencies": { "tslib": "^2.5.0" }, @@ -2816,11 +3240,11 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.4.tgz", - "integrity": "sha512-5yYNOgCN0DL0OplME0pthoUR/sCfipnROkbTO7m872o0GHCVNJj5xOFJ143rvHNA54+pIPMLum4z2DhPC2pVGA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.4.tgz", + "integrity": "sha512-Pbu6P4MBwRcjrLgdTR1O4Y3c0sTZn2JdOiJNcgL7EcIStcQodj+6ZTXtbyU/WTEU3MV2NMA10LxFc3AWHZ3+4A==", "dependencies": { - "@smithy/types": "^2.11.0", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2828,12 +3252,13 @@ } }, "node_modules/@smithy/util-retry": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.4.tgz", - "integrity": "sha512-JRZwhA3fhkdenSEYIWatC8oLwt4Bdf2LhHbNQApqb7yFoIGMl4twcYI3BcJZ7YIBZrACA9jGveW6tuCd836XzQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.4.tgz", + "integrity": "sha512-b+n1jBBKc77C1E/zfBe1Zo7S9OXGBiGn55N0apfhZHxPUP/fMH5AhFUUcWaJh7NAnah284M5lGkBKuhnr3yK5w==", + "peer": true, "dependencies": { - "@smithy/service-error-classification": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/service-error-classification": "^2.0.4", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2841,17 +3266,17 @@ } }, "node_modules/@smithy/util-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.4.tgz", - "integrity": "sha512-CiWaFPXstoR7v/PGHddFckovkhJb28wgQR7LwIt6RsQCJeRIHvUTVWhXw/Pco6Jm6nz/vfzN9FFdj/JN7RTkxQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.15.tgz", + "integrity": "sha512-A/hkYJPH2N5MCWYvky4tTpQihpYAEzqnUfxDyG3L/yMndy/2sLvxnyQal9Opuj1e9FiKSTeMyjnU9xxZGs0mRw==", "dependencies": { - "@smithy/fetch-http-handler": "^2.4.4", - "@smithy/node-http-handler": "^2.4.2", - "@smithy/types": "^2.11.0", - "@smithy/util-base64": "^2.2.0", - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-hex-encoding": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", + "@smithy/fetch-http-handler": "^2.2.2", + "@smithy/node-http-handler": "^2.1.7", + "@smithy/types": "^2.3.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2859,9 +3284,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", - "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", + "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", "dependencies": { "tslib": "^2.5.0" }, @@ -2870,11 +3295,11 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.2.0.tgz", - "integrity": "sha512-hBsKr5BqrDrKS8qy+YcV7/htmMGxriA1PREOf/8AGBhHIZnfilVv1Waf1OyKhSbFW15U/8+gcMUQ9/Kk5qwpHQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", + "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", "dependencies": { - "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" }, "engines": { @@ -2882,12 +3307,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.4.tgz", - "integrity": "sha512-AK17WaC0hx1wR9juAOsQkJ6DjDxBGEf5TrKhpXtNFEn+cVto9Li3MVsdpAO97AF7bhFXSyC8tJA3F4ThhqwCdg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.11.tgz", + "integrity": "sha512-8SJWUl9O1YhjC77EccgltI3q4XZQp3vp9DGEW6o0OdkUcwqm/H4qOLnMkA2n+NDojuM5Iia2jWoCdbluIiG7TA==", + "peer": true, "dependencies": { - "@smithy/abort-controller": "^2.1.4", - "@smithy/types": "^2.11.0", + "@smithy/abort-controller": "^2.0.11", + "@smithy/types": "^2.3.5", "tslib": "^2.5.0" }, "engines": { @@ -2900,9 +3326,9 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, "node_modules/@tanstack/query-core": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.20.1.tgz", - "integrity": "sha512-OONHHYG5vzjob4An+EfzbW7TRyb+sCA0AEgHzUIMlV9NYlF7wIwbla3PUfB3ocnaK1gZyROf0Lux/CBSu0exBQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.12.1.tgz", + "integrity": "sha512-WbZztNmKq0t6QjdNmHzezbi/uifYo9j6e2GLJkodsYaYUlzMbAp91RDyeHkIZrm7EfO4wa6Sm5sxJZm5SPlh6w==", "dev": true, "funding": { "type": "github", @@ -2910,12 +3336,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.20.1.tgz", - "integrity": "sha512-KRkOtJ47tv9B3EXfjHkbPkiFzOzYCOid8BrYBozk0rm9JpDB2xSf71q8w1PRudlQW6QUQIEDI9E6NIMh6AlLUw==", + "version": "5.12.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.12.2.tgz", + "integrity": "sha512-BeWZu8zVFH20oRc+S/K9ADPgWjEzP/XQCGBNz5IbApUwPQAdwkQYbXODVL5AyAlWiSxhx+P2xlARPBApj2Yrog==", "dev": true, "dependencies": { - "@tanstack/query-core": "5.20.1" + "@tanstack/query-core": "5.12.1" }, "funding": { "type": "github", @@ -3298,12 +3724,43 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1514.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1514.0.tgz", + "integrity": "sha512-ZQE5kHhJozwBB+Zaa21Gglm2pSQVU+8fFZNOn4pr+Kc1scYPlmVBPR3a0w19Vc4HNXPzjApAk2G4xMvzZDktAw==", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/aws-sign2": { @@ -3459,7 +3916,8 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -3514,6 +3972,16 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3842,12 +4310,6 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/chonky/node_modules/@react-dnd/shallowequal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", - "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==", - "dev": true - }, "node_modules/chonky/node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -3863,22 +4325,6 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", "dev": true }, - "node_modules/chonky/node_modules/react-dnd": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", - "integrity": "sha512-8rtzzT8iwHgdSC89VktwhqdKKtfXaAyC4wiqp0SywpHG12TTLvfOoL6xNEIUWXwIEWu+CFfDn4GZJyynCEuHIQ==", - "dev": true, - "dependencies": { - "@react-dnd/shallowequal": "^2.0.0", - "@types/hoist-non-react-statics": "^3.3.1", - "dnd-core": "^11.1.3", - "hoist-non-react-statics": "^3.3.0" - }, - "peerDependencies": { - "react": ">= 16.9.0", - "react-dom": ">= 16.9.0" - } - }, "node_modules/chonky/node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", @@ -3949,9 +4395,9 @@ } }, "node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", "dev": true, "engines": { "node": ">=6" @@ -4157,26 +4603,6 @@ "node": ">= 0.6" } }, - "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", - "dependencies": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/cookie-parser/node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -4257,9 +4683,9 @@ } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", "dev": true }, "node_modules/dashdash": { @@ -4592,6 +5018,14 @@ "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", "dev": true }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/exact-trie": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/exact-trie/-/exact-trie-1.0.13.tgz", @@ -4639,26 +5073,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express-bearer-token": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/express-bearer-token/-/express-bearer-token-2.4.0.tgz", - "integrity": "sha512-2+kRZT2xo+pmmvSY7Ma5FzxTJpO3kGaPCEXPbAm3GaoZ/z6FE4K6L7cvs1AUZwY2xkk15PcQw7t4dWjsl5rdJw==", - "dependencies": { - "cookie": "^0.3.1", - "cookie-parser": "^1.4.4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/express-bearer-token/node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4721,6 +5135,7 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], + "peer": true, "dependencies": { "strnum": "^1.0.5" }, @@ -4739,17 +5154,6 @@ "node": ">= 0.4.0" } }, - "node_modules/file-selector": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", - "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "dependencies": { - "tslib": "^2.4.0" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/file-type": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", @@ -4815,6 +5219,14 @@ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -4884,6 +5296,20 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5010,7 +5436,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -5098,7 +5523,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -5287,7 +5711,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5317,6 +5740,17 @@ "node": ">=8" } }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", @@ -5361,6 +5795,20 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5404,6 +5852,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -5427,6 +5889,14 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/jose": { "version": "4.13.1", "resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz", @@ -5439,7 +5909,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -5706,6 +6177,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5860,9 +6332,9 @@ } }, "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } @@ -5974,9 +6446,9 @@ "dev": true }, "node_modules/nodemon": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz", - "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", + "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", "dev": true, "dependencies": { "chokidar": "^3.5.2", @@ -6409,9 +6881,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -6493,9 +6965,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -6516,6 +6988,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6525,7 +6998,8 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -6572,6 +7046,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6653,6 +7136,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -6666,6 +7150,22 @@ "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==", "dev": true }, + "node_modules/react-dnd": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", + "integrity": "sha512-8rtzzT8iwHgdSC89VktwhqdKKtfXaAyC4wiqp0SywpHG12TTLvfOoL6xNEIUWXwIEWu+CFfDn4GZJyynCEuHIQ==", + "dev": true, + "dependencies": { + "@react-dnd/shallowequal": "^2.0.0", + "@types/hoist-non-react-statics": "^3.3.1", + "dnd-core": "^11.1.3", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "react": ">= 16.9.0", + "react-dom": ">= 16.9.0" + } + }, "node_modules/react-dnd-html5-backend": { "version": "11.1.3", "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-11.1.3.tgz", @@ -6688,22 +7188,6 @@ "react": "^18.2.0" } }, - "node_modules/react-dropzone": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", - "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", - "dependencies": { - "attr-accept": "^2.2.2", - "file-selector": "^0.6.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "react": ">= 16.8 || 18.0.0" - } - }, "node_modules/react-intl": { "version": "5.25.1", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", @@ -6830,12 +7314,12 @@ } }, "node_modules/react-router": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.0.tgz", - "integrity": "sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", "dev": true, "dependencies": { - "@remix-run/router": "1.15.0" + "@remix-run/router": "1.13.1" }, "engines": { "node": ">=14.0.0" @@ -6845,13 +7329,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.0.tgz", - "integrity": "sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", "dev": true, "dependencies": { - "@remix-run/router": "1.15.0", - "react-router": "6.22.0" + "@remix-run/router": "1.13.1", + "react-router": "6.20.1" }, "engines": { "node": ">=14.0.0" @@ -6862,18 +7346,27 @@ } }, "node_modules/react-toastify": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.4.tgz", - "integrity": "sha512-etR3RgueY8pe88SA67wLm8rJmL1h+CLqUGHuAoNsseW35oTGJEri6eBTyaXnFKNQ80v/eO10hBYLgz036XRGgA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", "dev": true, "dependencies": { - "clsx": "^2.1.0" + "clsx": "^1.1.1" }, "peerDependencies": { "react": ">=16", "react-dom": ">=16" } }, + "node_modules/react-toastify/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -7197,6 +7690,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -7394,9 +7892,9 @@ "dev": true }, "node_modules/socket.io": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -7419,9 +7917,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", - "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -7585,7 +8083,8 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "peer": true }, "node_modules/styled-components": { "version": "5.3.11", @@ -7875,6 +8374,32 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7922,13 +8447,13 @@ } }, "node_modules/vite": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", - "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.7.tgz", + "integrity": "sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==", "dev": true, "dependencies": { "esbuild": "^0.19.3", - "postcss": "^8.4.35", + "postcss": "^8.4.32", "rollup": "^4.2.0" }, "bin": { @@ -7990,6 +8515,24 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -8040,6 +8583,26 @@ } } }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", diff --git a/package.json b/package.json index 3332706..af82f14 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "minecluster", - "version": "0.0.1-alpha.1", + "version": "0.0.1-alpha.0", "description": "Minecraft Server management using Kubernetes", "type": "module", "scripts": { @@ -8,7 +8,7 @@ "start": "node dist/app.js", "dev:server": "nodemon dist/app.js", "dev:react": "vite", - "lint": "npx prettier -w src lib vite.config.js", + "kub": "nodemon lib/k8s.js", "start:dev": "concurrently -k \"MCL_DEV_PORT=52025 npm run dev:server\" \" MCL_VITE_DEV_PORT=52000 MCL_VITE_BACKEND_URL=http://localhost:52025 npm run dev:react\" -n s,v -p -c green,yellow", "start:dev:garden": "concurrently -k \"npm run dev:server\" \"npm run dev:react\" -n s,v -p -c green,yellow" }, @@ -22,44 +22,41 @@ "author": "Dunemask", "license": "LGPL-2.1", "devDependencies": { - "@emotion/react": "^11.11.3", + "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@mui/icons-material": "^5.15.9", - "@mui/material": "^5.15.9", - "@tanstack/react-query": "^5.20.1", + "@mui/icons-material": "^5.14.19", + "@mui/material": "^5.14.20", + "@tanstack/react-query": "^5.12.2", "@vitejs/plugin-react": "^4.2.1", "chonky": "^2.3.2", "chonky-icon-fontawesome": "^2.3.2", "concurrently": "^8.2.2", - "nodemon": "^3.0.3", - "prettier": "^3.2.5", + "nodemon": "^3.0.2", + "prettier": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-quill": "^2.0.0", - "react-router-dom": "^6.22.0", - "react-toastify": "^10.0.4", - "socket.io-client": "^4.7.4", - "vite": "^5.1.1" + "react-router-dom": "^6.20.1", + "react-toastify": "^9.1.3", + "socket.io-client": "^4.7.2", + "vite": "^5.0.7" }, "dependencies": { - "@aws-sdk/client-s3": "^3.529.1", - "@aws-sdk/s3-request-presigner": "^3.529.1", "@kubernetes/client-node": "^0.20.0", + "aws-sdk": "^2.1514.0", "basic-ftp": "^5.0.4", "bcrypt": "^5.1.1", "chalk": "^5.3.0", "express": "^4.18.2", - "express-bearer-token": "^2.4.0", "figlet": "^1.7.0", "js-yaml": "^4.1.0", - "moment": "^2.30.1", + "moment": "^2.29.4", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "pg-promise": "^11.5.4", "postgres-migrations": "^5.3.0", "rcon-client": "^4.2.4", - "react-dropzone": "^14.2.3", - "socket.io": "^4.7.4", + "socket.io": "^4.7.2", "uuid": "^9.0.1" } } diff --git a/public/icons/android-chrome-192x192.png b/public/icons/android-chrome-192x192.png deleted file mode 100644 index 5f91c4a..0000000 Binary files a/public/icons/android-chrome-192x192.png and /dev/null differ diff --git a/public/icons/android-chrome-512x512.png b/public/icons/android-chrome-512x512.png deleted file mode 100644 index ffad351..0000000 Binary files a/public/icons/android-chrome-512x512.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-120x120-precomposed.png b/public/icons/apple-touch-icon-120x120-precomposed.png deleted file mode 100644 index 1fae26b..0000000 Binary files a/public/icons/apple-touch-icon-120x120-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-120x120.png b/public/icons/apple-touch-icon-120x120.png deleted file mode 100644 index 11e2054..0000000 Binary files a/public/icons/apple-touch-icon-120x120.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-152x152-precomposed.png b/public/icons/apple-touch-icon-152x152-precomposed.png deleted file mode 100644 index cbf2337..0000000 Binary files a/public/icons/apple-touch-icon-152x152-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-152x152.png b/public/icons/apple-touch-icon-152x152.png deleted file mode 100644 index e6b3d43..0000000 Binary files a/public/icons/apple-touch-icon-152x152.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-180x180-precomposed.png b/public/icons/apple-touch-icon-180x180-precomposed.png deleted file mode 100644 index b3fc31a..0000000 Binary files a/public/icons/apple-touch-icon-180x180-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-180x180.png b/public/icons/apple-touch-icon-180x180.png deleted file mode 100644 index 952340d..0000000 Binary files a/public/icons/apple-touch-icon-180x180.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-60x60-precomposed.png b/public/icons/apple-touch-icon-60x60-precomposed.png deleted file mode 100644 index 26178b4..0000000 Binary files a/public/icons/apple-touch-icon-60x60-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-60x60.png b/public/icons/apple-touch-icon-60x60.png deleted file mode 100644 index c23ddf3..0000000 Binary files a/public/icons/apple-touch-icon-60x60.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-76x76-precomposed.png b/public/icons/apple-touch-icon-76x76-precomposed.png deleted file mode 100644 index 1e0a2f8..0000000 Binary files a/public/icons/apple-touch-icon-76x76-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-76x76.png b/public/icons/apple-touch-icon-76x76.png deleted file mode 100644 index 954eb27..0000000 Binary files a/public/icons/apple-touch-icon-76x76.png and /dev/null differ diff --git a/public/icons/apple-touch-icon-precomposed.png b/public/icons/apple-touch-icon-precomposed.png deleted file mode 100644 index b3fc31a..0000000 Binary files a/public/icons/apple-touch-icon-precomposed.png and /dev/null differ diff --git a/public/icons/apple-touch-icon.png b/public/icons/apple-touch-icon.png deleted file mode 100644 index 952340d..0000000 Binary files a/public/icons/apple-touch-icon.png and /dev/null differ diff --git a/public/icons/browserconfig.xml b/public/icons/browserconfig.xml deleted file mode 100644 index 0502cdd..0000000 --- a/public/icons/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #00aba9 - - - diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png deleted file mode 100644 index 821bb9f..0000000 Binary files a/public/icons/favicon-16x16.png and /dev/null differ diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png deleted file mode 100644 index 2e5456d..0000000 Binary files a/public/icons/favicon-32x32.png and /dev/null differ diff --git a/public/icons/favicon.ico b/public/icons/favicon.ico deleted file mode 100644 index a19896d..0000000 Binary files a/public/icons/favicon.ico and /dev/null differ diff --git a/public/icons/mstile-150x150.png b/public/icons/mstile-150x150.png deleted file mode 100644 index f04e6ad..0000000 Binary files a/public/icons/mstile-150x150.png and /dev/null differ diff --git a/public/icons/safari-pinned-tab.svg b/public/icons/safari-pinned-tab.svg deleted file mode 100644 index ad6d511..0000000 --- a/public/icons/safari-pinned-tab.svg +++ /dev/null @@ -1,252 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - - - - - - - - - - - diff --git a/public/icons/site.webmanifest b/public/icons/site.webmanifest deleted file mode 100644 index c008ad1..0000000 --- a/public/icons/site.webmanifest +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "Minecluster", - "short_name": "Minecluster", - "icons": [ - { - "src": "/icons/android-chrome-192x192.png?v=feb4-24-mineblock", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icons/android-chrome-512x512.png?v=feb4-24-mineblock", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#249c6b", - "background_color": "#249c6b", - "display": "standalone" -} diff --git a/src/components/files/ChonkyStyledFileBrowser.jsx b/src/components/files/ChonkyStyledFileBrowser.jsx new file mode 100644 index 0000000..3273684 --- /dev/null +++ b/src/components/files/ChonkyStyledFileBrowser.jsx @@ -0,0 +1,42 @@ +// ChonkyFullFileBrowser.tsx +import { forwardRef, memo } from "react"; +import { + StylesProvider, + createGenerateClassName, +} from "@material-ui/core/styles"; + +import { + FileBrowser, + FileList, + FileContextMenu, + FileNavbar, + FileToolbar, + setChonkyDefaults, + FileBrowserHandle, + FileBrowserProps, +} from "chonky"; + +import { ChonkyIconFA } from "chonky-icon-fontawesome"; + +setChonkyDefaults({ iconComponent: ChonkyIconFA }); + +const muiJSSClassNameGenerator = createGenerateClassName({ + // Seed property is used to add a prefix classes generated by material ui. + seed: "chonky", +}); + +export default memo( + forwardRef((props, ref) => { + const { onScroll } = props; + return ( + + + + + + + + + ); + }), +); diff --git a/src/components/files/FilePreview.jsx b/src/components/files/FilePreview.jsx index c6e1002..8a7d27c 100644 --- a/src/components/files/FilePreview.jsx +++ b/src/components/files/FilePreview.jsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, useEffect, memo } from "react"; import useMediaQuery from "@mui/material/useMediaQuery"; import { useTheme } from "@mui/material/styles"; import Button from "@mui/material/Button"; @@ -7,20 +7,10 @@ import DialogContent from "@mui/material/DialogContent"; import DialogActions from "@mui/material/DialogActions"; import Dialog from "@mui/material/Dialog"; import Toolbar from "@mui/material/Toolbar"; -import TextEditor from "./TextEditor.jsx"; -import { cairoAuthHeader } from "@mcl/util/auth.js"; -const textFileTypes = [ - "properties", - "txt", - "yaml", - "yml", - "json", - "env", - "toml", - "tml", - "text", -]; +import TextEditor from "./TextEditor.jsx"; + +const textFileTypes = ["properties", "txt", "yaml", "yml", "json", "env"]; const imageFileTypes = ["png", "jpeg", "jpg"]; export const supportedFileTypes = [...textFileTypes, ...imageFileTypes]; @@ -54,7 +44,6 @@ export default function FilePreview(props) { } async function onSave() { - if (!isTextFile) return; const formData = new FormData(); const blob = new Blob([modifiedText], { type: "plain/text" }); formData.append("file", blob, name); @@ -63,7 +52,6 @@ export default function FilePreview(props) { await fetch("/api/files/upload", { method: "POST", body: formData, - headers: cairoAuthHeader(), }); dialogToggle(); } @@ -88,7 +76,7 @@ export default function FilePreview(props) { {name} - {isTextFile && } + - - - ); -} diff --git a/src/components/servers/RconDialog.jsx b/src/components/servers/RconDialog.jsx index ad69761..579b97b 100644 --- a/src/components/servers/RconDialog.jsx +++ b/src/components/servers/RconDialog.jsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import useMediaQuery from "@mui/material/useMediaQuery"; import { useTheme } from "@mui/material/styles"; import Button from "@mui/material/Button"; @@ -19,19 +19,22 @@ export default function RconDialog(props) { const { server, open, dialogToggle } = props; const { name: serverName, id: serverId } = server ?? {}; const theme = useTheme(); - const fullScreen = useMediaQuery(theme.breakpoints.down("md")); + const fullScreen = useMediaQuery(theme.breakpoints.down("sm")); return ( - + RCON - {serverName} - + diff --git a/src/components/servers/RconSocket.js b/src/components/servers/RconSocket.js index 330b85d..42a1226 100644 --- a/src/components/servers/RconSocket.js +++ b/src/components/servers/RconSocket.js @@ -8,7 +8,6 @@ export default class RconSocket { this.sk.on("rcon-error", this.onRconError.bind(this)); this.sk.on("error", () => console.log("WHOOSPSIE I GUESS?")); this.rconLive = false; - this.rconError = false; } onPush(p) { @@ -23,8 +22,7 @@ export default class RconSocket { onRconError(v) { this.rconLive = false; - this.rconError = true; - console.log("Server sent: ", v); + console.log("Server sent" + v); } onConnect() { diff --git a/src/components/servers/RconView.jsx b/src/components/servers/RconView.jsx index 1eafe22..d4c99fd 100644 --- a/src/components/servers/RconView.jsx +++ b/src/components/servers/RconView.jsx @@ -2,21 +2,9 @@ import { useState, useEffect, useRef } from "react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; -import Skeleton from "@mui/material/Skeleton"; -import Typography from "@mui/material/Typography"; import RconSocket from "./RconSocket.js"; import "@mcl/css/rcon.css"; -function RconLogSkeleton() { - return ( - - ); -} - export default function RconView(props) { const { serverId } = props; const logsRef = useRef(0); @@ -51,47 +39,26 @@ export default function RconView(props) { } return ( - - - {logs.length === 0 && - [...Array(20).keys()].map((_v, i) => )} - {logs.length > 0 && - logs.map((v, k) => ( - - {v} - - ))} - - + +
+ {logs.map((v, k) => ( + + {v} +
+
+ ))} +
+ - {rcon && rcon.rconLive && !rcon.rconError && ( - - )} - {!(rcon && rcon.rconLive && !rcon.rconError) && ( + {rcon && rcon.rconLive && } + {!(rcon && rcon.rconLive) && ( )} diff --git a/src/components/servers/ServerCard.jsx b/src/components/servers/ServerCard.jsx index 0b6f724..ac0ffd0 100644 --- a/src/components/servers/ServerCard.jsx +++ b/src/components/servers/ServerCard.jsx @@ -14,11 +14,10 @@ import PlayArrowIcon from "@mui/icons-material/PlayArrow"; import DeleteForeverIcon from "@mui/icons-material/DeleteForever"; import EditIcon from "@mui/icons-material/Edit"; import FolderIcon from "@mui/icons-material/Folder"; -import BackupIcon from "@mui/icons-material/Backup"; import { Link } from "react-router-dom"; export default function ServerCard(props) { - const { server, openRcon, openBackups } = props; + const { server, openRcon } = props; const { name, id, metrics, ftpAvailable, serverAvailable, services } = server; const startServer = useStartServer(id); const stopServer = useStopServer(id); @@ -118,14 +117,6 @@ export default function ServerCard(props) { > - - - { if (settingsUpdate[k] === undefined) continue; settingsToUpdate[k] = settingsUpdate[k]; } - console.log("SAVING", settingsToUpdate); localStorage.setItem("settings", JSON.stringify(settingsToUpdate)); }; diff --git a/src/nav/Viewport.jsx b/src/nav/Viewport.jsx index fabe10c..a6b7622 100644 --- a/src/nav/Viewport.jsx +++ b/src/nav/Viewport.jsx @@ -1,14 +1,13 @@ +import Box from "@mui/material/Box"; import Toolbar from "@mui/material/Toolbar"; import MCLPortal from "./MCLPortal.jsx"; +import Button from "@mui/material/Button"; +import SpeedDialIcon from "@mui/material/SpeedDialIcon"; // Import Navbar /*import Navbar from "./Navbar.jsx";*/ -import { useCairoAuth } from "@mcl/util/auth.js"; import MCLMenu from "./MCLMenu.jsx"; -import Auth from "@mcl/pages/Auth.jsx"; export default function Views() { - const auth = useCairoAuth(); - if (!auth) return ; return (
diff --git a/src/pages/Auth.jsx b/src/pages/Auth.jsx deleted file mode 100644 index e7278fa..0000000 --- a/src/pages/Auth.jsx +++ /dev/null @@ -1,63 +0,0 @@ -import { useState, useEffect } from "react"; -import { useSearchParams, useNavigate } from "react-router-dom"; -import Box from "@mui/material/Box"; -import Button from "@mui/material/Button"; -import Typography from "@mui/material/Typography"; - -export default function Auth() { - const [searchParams] = useSearchParams(); - const currentServer = searchParams.get("token"); - - const nav = useNavigate(); - - const cairoLogin = () => - (window.location.href = `/api/auth/redirect?redirectUri=${window.location.href}`); - - return ( - theme.palette.primary.main, - }} - > - - - - - - - - - ); -} diff --git a/src/pages/CreateCoreOptions.jsx b/src/pages/CreateCoreOptions.jsx index ad983ae..4d68121 100644 --- a/src/pages/CreateCoreOptions.jsx +++ b/src/pages/CreateCoreOptions.jsx @@ -22,7 +22,6 @@ import MemoryOption, { memoryOptions, } from "@mcl/components/server-options/MemoryOption.jsx"; import ExtraPortsOption from "@mcl/components/server-options/ExtraPortsOption.jsx"; -import StorageOption from "@mcl/components/server-options/StorageOption.jsx"; import BackupHostOption from "@mcl/components/server-options/BackupHostOption.jsx"; import BackupBucketOption from "@mcl/components/server-options/BackupBucketOption.jsx"; @@ -37,7 +36,6 @@ const defaultServer = { serverType: serverTypeOptions[0], cpu: cpuOptions[0], memory: memoryOptions[2], // 1.5GB - storage: 0, extraPorts: [], }; @@ -101,23 +99,20 @@ export default function CreateCoreOptions() { /> - - {spec.storage !== 0 && ( - - } - label="Enable Backups?" - labelPlacement="start" - sx={{ mr: "auto" }} - /> - )} - {backupEnabled && spec.storage !== 0 && ( + + } + label="Enable Backups?" + labelPlacement="start" + sx={{ mr: "auto" }} + /> + {backupEnabled && ( setSpec(serverBlueprint), [serverBlueprint]); @@ -48,7 +47,9 @@ export default function EditCoreOptions(props) { const coreUpdate = (attr) => (e) => updateSpec(attr, e.target.value); - const upsertSpec = () => modifyServer().then(() => nav("/")); + const upsertSpec = () => { + modifyServer(spec); + }; const toggleBackupEnabled = () => updateSpec("backupEnabled", !spec.backupEnabled); @@ -73,11 +74,7 @@ export default function EditCoreOptions(props) { > - + { @@ -35,11 +31,6 @@ export default function Home() { rconToggle(); }; - const openBackups = (s) => () => { - setServer(s); - backupsToggle(); - }; - return ( @@ -60,20 +51,10 @@ export default function Home() { {!isLoading && servers.map((s, k) => ( - + ))} -