From a70d1203b529f88f5c03393bff0ce6f36bd98f99 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Wed, 10 Jul 2024 02:48:09 +0800 Subject: [PATCH 01/11] Media Backend Stuff Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- Dockerfile | 2 + docker-compose.yml | 7 +- nuxt.config.ts | 6 ++ .../20240709181603_init9/migration.sql | 11 +++ .../20240709183802_init10/migration.sql | 2 + prisma/schema.prisma | 11 +++ server/api/v1/media/delete.post.ts | 48 +++++++++++++ server/api/v1/media/fetch.get.ts | 6 ++ server/api/v1/media/move.post.ts | 48 +++++++++++++ server/api/v1/media/new-dir.post.ts | 46 +++++++++++++ server/api/v1/media/upload.post.ts | 68 +++++++++++++++++++ server/middleware/serveMedia.ts | 24 +++++++ 12 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20240709181603_init9/migration.sql create mode 100644 prisma/migrations/20240709183802_init10/migration.sql create mode 100644 server/api/v1/media/delete.post.ts create mode 100644 server/api/v1/media/fetch.get.ts create mode 100644 server/api/v1/media/move.post.ts create mode 100644 server/api/v1/media/new-dir.post.ts create mode 100644 server/api/v1/media/upload.post.ts create mode 100644 server/middleware/serveMedia.ts diff --git a/Dockerfile b/Dockerfile index d90c3e6..9414d63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,8 @@ RUN npm install npx RUN npx prisma generate +RUN mkdir -p /app/media && chown -R node:node /app/media + RUN npm run build ENV HOST 0.0.0.0 diff --git a/docker-compose.yml b/docker-compose.yml index 2c0a55e..9b448e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,4 +5,9 @@ services: image: type32/ultimate-frisbee:latest ports: - "${SITE_PORT}:3000" - restart: on-failure \ No newline at end of file + restart: on-failure + volumes: + - media_data:/app/media + +volumes: + media_data: \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index 3d3ff91..11df660 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -13,6 +13,12 @@ export default defineNuxtConfig({ "@nuxtjs/mdc" ], + nitro: { + storage: { + 'media': { driver: 'fs', base: './media' } + } + }, + fonts:{ families: [ { name: 'Inter', provider: 'google' } diff --git a/prisma/migrations/20240709181603_init9/migration.sql b/prisma/migrations/20240709181603_init9/migration.sql new file mode 100644 index 0000000..a71efc2 --- /dev/null +++ b/prisma/migrations/20240709181603_init9/migration.sql @@ -0,0 +1,11 @@ +-- CreateTable +CREATE TABLE "Media" ( + "id" SERIAL NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "fileName" TEXT NOT NULL, + "url" TEXT NOT NULL, + "directory" TEXT NOT NULL, + + CONSTRAINT "Media_pkey" PRIMARY KEY ("id") +); diff --git a/prisma/migrations/20240709183802_init10/migration.sql b/prisma/migrations/20240709183802_init10/migration.sql new file mode 100644 index 0000000..bbe6595 --- /dev/null +++ b/prisma/migrations/20240709183802_init10/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Media" ADD COLUMN "isFolder" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6772934..fe88ee5 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -55,6 +55,17 @@ model User { tokens Token[] } +model Media { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + + fileName String + url String + directory String + isFolder Boolean @default(false) +} + model Token { id Int @id @default(autoincrement()) createdAt DateTime @default(now()) diff --git a/server/api/v1/media/delete.post.ts b/server/api/v1/media/delete.post.ts new file mode 100644 index 0000000..fd496f8 --- /dev/null +++ b/server/api/v1/media/delete.post.ts @@ -0,0 +1,48 @@ +import * as fs from 'node:fs/promises'; +import * as path from 'node:path'; +import {PrismaClient} from "@prisma/client"; +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const { targetPath, targetId } = await readBody(event); + const header = getHeader(event, 'Authorization'); + + if (!header) { + throw createError({ + statusMessage: 'Unauthorized, please re-login.', + statusCode: 403 + }); + } + + if (!targetPath) { + throw createError({ + statusCode: 400, + statusMessage: 'Target path is required.', + }); + } + + const fullPath = path.join(process.cwd(), 'media', targetPath); + + try { + prisma.media.delete({ + where: { + id: targetId as number, + directory: targetPath, + } + }) + + const stats = await fs.stat(fullPath); + if (stats.isDirectory()) { + await fs.rm(fullPath, { recursive: true, force: true }); + } else { + await fs.unlink(fullPath); + } + return { success: true, message: `Deleted: ${targetPath}` }; + } catch (error) { + console.error('Error deleting file/directory:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error deleting file/directory.', + }); + } +}); \ No newline at end of file diff --git a/server/api/v1/media/fetch.get.ts b/server/api/v1/media/fetch.get.ts new file mode 100644 index 0000000..564de6a --- /dev/null +++ b/server/api/v1/media/fetch.get.ts @@ -0,0 +1,6 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +export default defineEventHandler(async (event) => { + +}) \ No newline at end of file diff --git a/server/api/v1/media/move.post.ts b/server/api/v1/media/move.post.ts new file mode 100644 index 0000000..70121b0 --- /dev/null +++ b/server/api/v1/media/move.post.ts @@ -0,0 +1,48 @@ +import * as fs from 'node:fs/promises'; +import * as path from 'node:path'; +import {PrismaClient} from "@prisma/client"; +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const { sourcePath, sourceId, destPath } = await readBody(event); + const header = getHeader(event, 'Authorization'); + + if (!header) { + throw createError({ + statusMessage: 'Unauthorized, please re-login.', + statusCode: 403 + }); + } + + if (!sourcePath || !destPath) { + throw createError({ + statusCode: 400, + statusMessage: 'Source and destination paths are required.', + }); + } + + const fullSourcePath = path.join(process.cwd(), 'media', sourcePath); + const fullDestPath = path.join(process.cwd(), 'media', destPath); + + try { + await fs.rename(fullSourcePath, fullDestPath); + + prisma.media.update({ + where: { + id: sourceId as number + }, + data: { + directory: destPath, + fileName: destPath.split('/')[destPath.length - 1] + } + }) + + return { success: true, message: `Moved from ${sourcePath} to ${destPath}` }; + } catch (error) { + console.error('Error moving file/directory:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error moving file/directory.', + }); + } +}); \ No newline at end of file diff --git a/server/api/v1/media/new-dir.post.ts b/server/api/v1/media/new-dir.post.ts new file mode 100644 index 0000000..a02cda0 --- /dev/null +++ b/server/api/v1/media/new-dir.post.ts @@ -0,0 +1,46 @@ +import * as fs from 'node:fs/promises'; +import * as path from 'node:path'; +import {PrismaClient} from "@prisma/client"; +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const { dirPath } = await readBody(event); + const header = getHeader(event, 'Authorization'); + + if (!header) { + throw createError({ + statusMessage: 'Unauthorized, please re-login.', + statusCode: 403 + }); + } + + if (!dirPath) { + throw createError({ + statusCode: 400, + statusMessage: 'No directory path provided.', + }); + } + + const fullPath = path.join(process.cwd(), 'media', dirPath); + + try { + await fs.mkdir(fullPath, { recursive: true }); + + prisma.media.create({ + data: { + url: dirPath, + fileName: dirPath.split('/')[dirPath.length - 1], + directory: dirPath, + isFolder: true + } + }) + + return { success: true, message: `Directory created: ${dirPath}` }; + } catch (error) { + console.error('Error creating directory:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error creating directory.', + }); + } +}); \ No newline at end of file diff --git a/server/api/v1/media/upload.post.ts b/server/api/v1/media/upload.post.ts new file mode 100644 index 0000000..3095d91 --- /dev/null +++ b/server/api/v1/media/upload.post.ts @@ -0,0 +1,68 @@ +import * as fs from 'node:fs/promises'; +import * as path from 'node:path'; +import { randomUUID } from 'node:crypto'; +import {PrismaClient} from "@prisma/client"; +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const { file, name } = await readBody(event); + const header = getHeader(event, 'Authorization'); + const config = useRuntimeConfig(); + + if (!header) { + throw createError({ + statusMessage: 'Unauthorized, please re-login.', + statusCode: 403 + }); + } + + if (!file || !name) { + throw createError({ + statusCode: 400, + statusMessage: 'No file or name identifier provided.', + }); + } + + // Generate a unique filename + const fileExtension = path.extname(name); + const uniqueFilename = `${randomUUID()}${fileExtension}`; + + // Define the media directory and ensure it exists + const mediaDir = path.join(process.cwd(), 'media'); + await fs.mkdir(mediaDir, { recursive: true }); + + // Define the file path + const filePath = path.join(mediaDir, uniqueFilename); + + try { + // Write the file to the server + await fs.writeFile(filePath, Buffer.from(await file.arrayBuffer())); + + // Generate a permalink + const permalink = `/media/${uniqueFilename}`; + + prisma.media.create({ + data: { + fileName: uniqueFilename, + url: permalink, + directory: filePath + } + }) + + return { + success: true, + permalink: permalink + }; + } catch (error) { + console.error('Error saving file:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error saving file.', + }); + } +}); + +interface MediaFile { + file: File; + name: string; +} \ No newline at end of file diff --git a/server/middleware/serveMedia.ts b/server/middleware/serveMedia.ts new file mode 100644 index 0000000..add76cd --- /dev/null +++ b/server/middleware/serveMedia.ts @@ -0,0 +1,24 @@ +// server/middleware/serveMedia.ts +import { serveStatic } from 'h3' +import {readFile, stat} from "node:fs/promises"; +import {join} from "pathe"; + +const publicDir = "media"; + +export default defineEventHandler((event) => { + return serveStatic(event, { + getContents: (id) => readFile(join(publicDir, id)), + getMeta: async (id) => { + const stats = await stat(join(publicDir, id)).catch(() => {}); + + if (!stats || !stats.isFile()) { + return; + } + + return { + size: stats.size, + mtime: stats.mtimeMs, + }; + }, + }); +}) \ No newline at end of file From c6f74ea5300fcb6d69accfc531759675d5d6f4c8 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Wed, 10 Jul 2024 12:15:27 +0800 Subject: [PATCH 02/11] nightly Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- .github/workflows/docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index ebd933e..538d4f1 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -26,6 +26,6 @@ jobs: uses: docker/build-push-action@v5 with: push: true - tags: type32/ultimate-frisbee:latest + tags: type32/ultimate-frisbee:nightly build-args: | NUXT_UI_PRO_LICENSE=${{ secrets.NUXT_UI_PRO_LICENSE }} From 99bf047151b72c8a5ecfbb20e55cb5aaeaf55510 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Wed, 10 Jul 2024 15:44:29 +0800 Subject: [PATCH 03/11] Added More Backend Stuff Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- composables/useMedia.ts | 110 +++++++++++++++++++++++ pages/admin/articles.vue | 2 +- pages/admin/matches.vue | 2 +- pages/admin/teams.vue | 2 +- server/api/v1/media/delete-batch.post.ts | 45 ++++++++++ server/api/v1/media/list-dir.get.ts | 39 ++++++++ server/api/v1/media/list.get.ts | 53 +++++++++++ server/api/v1/media/move-batch.post.ts | 47 ++++++++++ 8 files changed, 297 insertions(+), 3 deletions(-) create mode 100644 composables/useMedia.ts create mode 100644 server/api/v1/media/delete-batch.post.ts create mode 100644 server/api/v1/media/list-dir.get.ts create mode 100644 server/api/v1/media/list.get.ts create mode 100644 server/api/v1/media/move-batch.post.ts diff --git a/composables/useMedia.ts b/composables/useMedia.ts new file mode 100644 index 0000000..aa1117a --- /dev/null +++ b/composables/useMedia.ts @@ -0,0 +1,110 @@ +import type { Media } from "@prisma/client"; + +interface DirectoryContent { + currentDirectory: string; + parentDirectory: string | null; + items: (Media & { type: 'file' | 'folder' })[]; +} + +interface StructuredMedia { + [key: string]: { + files: Media[]; + folders: StructuredMedia; + }; +} + +interface CreateDirectoryResponse { + success: boolean; + message: string; +} + +interface MoveFileResponse { + success: boolean; + message: string; +} + +interface DeleteFileResponse { + success: boolean; + message: string; +} + +interface UploadFileResponse { + success: boolean; + permalink: string; +} + +export default function useMedia() { + const config = useRuntimeConfig(); + + const createDirectory = async (dirPath: string) => { + return useFetch('/api/v1/media/new-dir', { + method: 'POST', + body: { dirPath }, + }); + }; + + const moveFile = async (sourcePath: string, destPath: string) => { + return useFetch('/api/v1/media/move', { + method: 'POST', + body: { sourcePath, destPath }, + }); + }; + + const deleteFile = async (targetPath: string) => { + return useFetch('/api/v1/media/delete', { + method: 'POST', + body: { targetPath }, + }); + }; + + const uploadFile = async (file: File, name: string) => { + const formData = new FormData(); + formData.append('file', file); + formData.append('name', name); + + return useFetch('/api/v1/media/upload', { + method: 'POST', + body: formData, + }); + }; + + const getMediaUrl = (media: Media) => { + return `${config.public.siteUrl}${media.url}`; + }; + + const listMedia = async () => { + return useFetch('/api/media/list'); + }; + + const listDirectory = async (directory: string = '/') => { + return useFetch('/api/media/listDirectory', { + params: { directory } + }); + }; + + const deleteBatch = async (ids: number[]) => { + return useFetch<{ success: boolean; message: string }>('/api/media/delete-batch', { + method: 'POST', + body: { ids }, + }); + }; + + const moveBatch = async (ids: number[], destination: string) => { + return useFetch<{ success: boolean; message: string }>('/api/media/move-batch', { + method: 'POST', + body: { ids, destination }, + }); + }; + + return { + createDirectory, + moveFile, + deleteFile, + uploadFile, + getMediaUrl, + listMedia, + listDirectory, + deleteBatch, + moveBatch + }; +} \ No newline at end of file diff --git a/pages/admin/articles.vue b/pages/admin/articles.vue index 922d116..06650b8 100644 --- a/pages/admin/articles.vue +++ b/pages/admin/articles.vue @@ -151,7 +151,7 @@ async function save() { diff --git a/pages/admin/matches.vue b/pages/admin/matches.vue index 6ea8e6e..5d02d8f 100644 --- a/pages/admin/matches.vue +++ b/pages/admin/matches.vue @@ -142,7 +142,7 @@ function getTeamNameWithId(index: number){ diff --git a/pages/admin/teams.vue b/pages/admin/teams.vue index d55ba8c..8f7fa14 100644 --- a/pages/admin/teams.vue +++ b/pages/admin/teams.vue @@ -123,7 +123,7 @@ async function save() { diff --git a/server/api/v1/media/delete-batch.post.ts b/server/api/v1/media/delete-batch.post.ts new file mode 100644 index 0000000..521e458 --- /dev/null +++ b/server/api/v1/media/delete-batch.post.ts @@ -0,0 +1,45 @@ +// server/api/media/delete-batch.post.ts + +import { PrismaClient } from '@prisma/client' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' + +const prisma = new PrismaClient() + +export default defineEventHandler(async (event) => { + const { ids } = await readBody(event) + + if (!Array.isArray(ids) || ids.length === 0) { + throw createError({ + statusCode: 400, + statusMessage: 'Invalid or empty ids array', + }) + } + + try { + const mediaItems = await prisma.media.findMany({ + where: { id: { in: ids } } + }) + + for (const item of mediaItems) { + const fullPath = path.join(process.cwd(), 'media', item.url) + if (item.isFolder) { + await fs.rm(fullPath, { recursive: true, force: true }) + } else { + await fs.unlink(fullPath) + } + } + + await prisma.media.deleteMany({ + where: { id: { in: ids } } + }) + + return { success: true, message: `Deleted ${mediaItems.length} items` } + } catch (error) { + console.error('Error deleting batch:', error) + throw createError({ + statusCode: 500, + statusMessage: 'Error deleting batch', + }) + } +}) \ No newline at end of file diff --git a/server/api/v1/media/list-dir.get.ts b/server/api/v1/media/list-dir.get.ts new file mode 100644 index 0000000..11ef1a7 --- /dev/null +++ b/server/api/v1/media/list-dir.get.ts @@ -0,0 +1,39 @@ +// server/api/media/listDirectory.get.ts + +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +export default defineEventHandler(async (event) => { + const query = getQuery(event) + const directory = (query.directory as string) || '/' + + try { + const mediaItems = await prisma.media.findMany({ + where: { + directory: directory + }, + orderBy: [ + { isFolder: 'desc' }, + { fileName: 'asc' } + ] + }); + + const result = { + currentDirectory: directory, + parentDirectory: directory === '/' ? null : directory.split('/').slice(0, -1).join('/') || '/', + items: mediaItems.map(item => ({ + ...item, + type: item.isFolder ? 'folder' : 'file' + })) + }; + + return result; + } catch (error) { + console.error('Error fetching directory contents:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error fetching directory contents.', + }); + } +}); \ No newline at end of file diff --git a/server/api/v1/media/list.get.ts b/server/api/v1/media/list.get.ts new file mode 100644 index 0000000..53f5740 --- /dev/null +++ b/server/api/v1/media/list.get.ts @@ -0,0 +1,53 @@ +// server/api/media/list.get.ts + +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +interface StructuredMedia { + [key: string]: { + files: any[]; + folders: StructuredMedia; + }; +} + +export default defineEventHandler(async (event) => { + try { + const mediaItems = await prisma.media.findMany({ + orderBy: [ + { isFolder: 'desc' }, + { fileName: 'asc' } + ] + }); + + const structuredResult: StructuredMedia = { '/': { files: [], folders: {} } }; + + for (const item of mediaItems) { + const pathParts = item.directory.split('/').filter(Boolean); + let currentLevel = structuredResult['/']; + + for (const part of pathParts) { + if (!currentLevel.folders[part]) { + currentLevel.folders[part] = { files: [], folders: {} }; + } + currentLevel = currentLevel.folders[part]; + } + + if (item.isFolder) { + if (!currentLevel.folders[item.fileName]) { + currentLevel.folders[item.fileName] = { files: [], folders: {} }; + } + } else { + currentLevel.files.push(item); + } + } + + return structuredResult; + } catch (error) { + console.error('Error fetching media:', error); + throw createError({ + statusCode: 500, + statusMessage: 'Error fetching media.', + }); + } +}); \ No newline at end of file diff --git a/server/api/v1/media/move-batch.post.ts b/server/api/v1/media/move-batch.post.ts new file mode 100644 index 0000000..b32ce56 --- /dev/null +++ b/server/api/v1/media/move-batch.post.ts @@ -0,0 +1,47 @@ +// server/api/media/move-batch.post.ts + +import { PrismaClient } from '@prisma/client' +import * as fs from 'node:fs/promises' +import * as path from 'node:path' + +const prisma = new PrismaClient() + +export default defineEventHandler(async (event) => { + const { ids, destination } = await readBody(event) + + if (!Array.isArray(ids) || ids.length === 0 || typeof destination !== 'string') { + throw createError({ + statusCode: 400, + statusMessage: 'Invalid input', + }) + } + + try { + const mediaItems = await prisma.media.findMany({ + where: { id: { in: ids } } + }) + + for (const item of mediaItems) { + const oldPath = path.join(process.cwd(), 'media', item.url) + const newPath = path.join(process.cwd(), 'media', destination, path.basename(item.url)) + + await fs.rename(oldPath, newPath) + + await prisma.media.update({ + where: { id: item.id }, + data: { + directory: destination, + url: path.join(destination, path.basename(item.url)) + } + }) + } + + return { success: true, message: `Moved ${mediaItems.length} items to ${destination}` } + } catch (error) { + console.error('Error moving batch:', error) + throw createError({ + statusCode: 500, + statusMessage: 'Error moving batch', + }) + } +}) \ No newline at end of file From 21cfa3edc5f663bfd51915ee9576833bf1f2e531 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Thu, 11 Jul 2024 02:41:50 +0800 Subject: [PATCH 04/11] Successfully Tested List-dir and upload and new dir backend Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- .gitignore | 3 + composables/useMedia.ts | 25 +- layouts/DashboardLayout.vue | 5 + middleware/check-auth.ts | 6 +- nuxt.config.ts | 5 + pages/admin/articles.vue | 8 +- pages/admin/media/[...dir].vue | 234 ++++++++++++++++++ .../20240710103623_init11/migration.sql | 2 + prisma/schema.prisma | 9 +- server/api/v1/auth/validate-token.post.ts | 2 +- server/api/v1/media/delete-batch.post.ts | 4 + server/api/v1/media/delete.post.ts | 14 +- server/api/v1/media/list-dir.get.ts | 19 +- server/api/v1/media/move.post.ts | 2 +- server/api/v1/media/new-dir.post.ts | 38 ++- server/api/v1/media/upload.post.ts | 35 ++- server/middleware/serveMedia.ts | 39 +-- 17 files changed, 380 insertions(+), 70 deletions(-) create mode 100644 pages/admin/media/[...dir].vue create mode 100644 prisma/migrations/20240710103623_init11/migration.sql diff --git a/.gitignore b/.gitignore index 4a7f73a..499e930 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ logs .env .env.* !.env.example +media +media/ +media/* \ No newline at end of file diff --git a/composables/useMedia.ts b/composables/useMedia.ts index aa1117a..c279d97 100644 --- a/composables/useMedia.ts +++ b/composables/useMedia.ts @@ -36,10 +36,13 @@ interface UploadFileResponse { export default function useMedia() { const config = useRuntimeConfig(); - const createDirectory = async (dirPath: string) => { + const createDirectory = async (targetPath: string, folderName: string) => { return useFetch('/api/v1/media/new-dir', { method: 'POST', - body: { dirPath }, + body: { targetPath: targetPath, folderName: folderName }, + headers: { + 'Authorization': useCookie('session_token').value || '' + } }); }; @@ -57,14 +60,19 @@ export default function useMedia() { }); }; - const uploadFile = async (file: File, name: string) => { + const uploadFile = async (file: File, path: string) => { const formData = new FormData(); formData.append('file', file); - formData.append('name', name); return useFetch('/api/v1/media/upload', { method: 'POST', body: formData, + query: { + targetPath: path, + }, + headers: { + 'Authorization': useCookie('session_token').value || '' + } }); }; @@ -73,12 +81,13 @@ export default function useMedia() { }; const listMedia = async () => { - return useFetch('/api/media/list'); + return useFetch('/api/v1/media/list'); }; - const listDirectory = async (directory: string = '/') => { - return useFetch('/api/media/listDirectory', { - params: { directory } + const listDirectory = async (directory: string = '') => { + return useFetch('/api/v1/media/list-dir', { + params: { directory }, + lazy: true }); }; diff --git a/layouts/DashboardLayout.vue b/layouts/DashboardLayout.vue index 1a0be9d..66644b4 100644 --- a/layouts/DashboardLayout.vue +++ b/layouts/DashboardLayout.vue @@ -16,6 +16,11 @@ const links = [ icon: 'i-heroicons-users', to: '/admin/teams' }, + { + label: 'Media Library', + icon: 'i-heroicons-files', + to: '/admin/media' + }, { label: 'Users', icon: 'i-heroicons-command-line', diff --git a/middleware/check-auth.ts b/middleware/check-auth.ts index 48b69a9..14e099f 100644 --- a/middleware/check-auth.ts +++ b/middleware/check-auth.ts @@ -7,14 +7,14 @@ export default defineNuxtRouteMiddleware(async (to, from) => { await auth.validateToken() if (!auth.isAuthenticated || useCookie('session_token').value == null || useCookie('session_token') === undefined) { - console.log('No good, no cookie') + // console.log('No good, no cookie') return navigateTo('/auth'); } - console.log("checked middleware") + // console.log("checked middleware") } catch (e: any){ const $toast = useToast() - console.log("there is error in middleware") + // console.log("there is error in middleware") $toast.add({description: e.message, color:'red'}) return navigateTo('/auth'); } diff --git a/nuxt.config.ts b/nuxt.config.ts index 11df660..942871d 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -19,6 +19,11 @@ export default defineNuxtConfig({ } }, + // If you want to serve media files from a specific URL prefix + routeRules: { + '/media/**': { static: true } + }, + fonts:{ families: [ { name: 'Inter', provider: 'google' } diff --git a/pages/admin/articles.vue b/pages/admin/articles.vue index 06650b8..3ddbb8f 100644 --- a/pages/admin/articles.vue +++ b/pages/admin/articles.vue @@ -163,22 +163,22 @@ async function save() {

Create New Article

- +
- + - +
diff --git a/pages/admin/media/[...dir].vue b/pages/admin/media/[...dir].vue new file mode 100644 index 0000000..cbd8adf --- /dev/null +++ b/pages/admin/media/[...dir].vue @@ -0,0 +1,234 @@ + + + + + \ No newline at end of file diff --git a/prisma/migrations/20240710103623_init11/migration.sql b/prisma/migrations/20240710103623_init11/migration.sql new file mode 100644 index 0000000..9d889d4 --- /dev/null +++ b/prisma/migrations/20240710103623_init11/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Media" ADD COLUMN "pseudoDirectory" TEXT NOT NULL DEFAULT '/media'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index fe88ee5..ba19219 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -60,10 +60,11 @@ model Media { createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt - fileName String - url String - directory String - isFolder Boolean @default(false) + fileName String + url String + directory String + pseudoDirectory String @default("/media") + isFolder Boolean @default(false) } model Token { diff --git a/server/api/v1/auth/validate-token.post.ts b/server/api/v1/auth/validate-token.post.ts index bfab0c7..66c3d09 100644 --- a/server/api/v1/auth/validate-token.post.ts +++ b/server/api/v1/auth/validate-token.post.ts @@ -23,7 +23,7 @@ export default defineEventHandler(async (event) => { } }) - console.log(!!data + " validate") + // console.log(!!data + " validate") return {valid: !!data, data} } catch (error) { console.error('Error validating token:', error); diff --git a/server/api/v1/media/delete-batch.post.ts b/server/api/v1/media/delete-batch.post.ts index 521e458..1d2fcf6 100644 --- a/server/api/v1/media/delete-batch.post.ts +++ b/server/api/v1/media/delete-batch.post.ts @@ -21,6 +21,10 @@ export default defineEventHandler(async (event) => { where: { id: { in: ids } } }) + if(mediaItems.length === 0) { + throw new Error("No files/folders present at the selected directories") + } + for (const item of mediaItems) { const fullPath = path.join(process.cwd(), 'media', item.url) if (item.isFolder) { diff --git a/server/api/v1/media/delete.post.ts b/server/api/v1/media/delete.post.ts index fd496f8..b4b4705 100644 --- a/server/api/v1/media/delete.post.ts +++ b/server/api/v1/media/delete.post.ts @@ -23,14 +23,24 @@ export default defineEventHandler(async (event) => { const fullPath = path.join(process.cwd(), 'media', targetPath); + let psuedoDir = ''; + + let spl = targetPath.split('/') + for(let i = 0; i < spl.length - 1; i++) { + psuedoDir = path.join(psuedoDir, spl[i]); + } + try { - prisma.media.delete({ + const data = await prisma.media.delete({ where: { id: targetId as number, - directory: targetPath, + pseudoDirectory: psuedoDir, } }) + if(!data) + throw new Error(`No file/folder at directory ${targetPath}`) + const stats = await fs.stat(fullPath); if (stats.isDirectory()) { await fs.rm(fullPath, { recursive: true, force: true }); diff --git a/server/api/v1/media/list-dir.get.ts b/server/api/v1/media/list-dir.get.ts index 11ef1a7..1e8d4a9 100644 --- a/server/api/v1/media/list-dir.get.ts +++ b/server/api/v1/media/list-dir.get.ts @@ -1,33 +1,28 @@ // server/api/media/listDirectory.get.ts import { PrismaClient } from '@prisma/client' +import path from "node:path"; const prisma = new PrismaClient() export default defineEventHandler(async (event) => { const query = getQuery(event) - const directory = (query.directory as string) || '/' + + // Sample input: directory is "Images", or "Images/AnotherFolder", or "" + const directory = ((query.directory as string) === '' ? '/' : (query.directory as string)) || '/' try { const mediaItems = await prisma.media.findMany({ where: { - directory: directory - }, - orderBy: [ - { isFolder: 'desc' }, - { fileName: 'asc' } - ] + pseudoDirectory: directory === '' ? '/' : directory + } }); const result = { currentDirectory: directory, parentDirectory: directory === '/' ? null : directory.split('/').slice(0, -1).join('/') || '/', - items: mediaItems.map(item => ({ - ...item, - type: item.isFolder ? 'folder' : 'file' - })) + items: mediaItems }; - return result; } catch (error) { console.error('Error fetching directory contents:', error); diff --git a/server/api/v1/media/move.post.ts b/server/api/v1/media/move.post.ts index 70121b0..ad7e116 100644 --- a/server/api/v1/media/move.post.ts +++ b/server/api/v1/media/move.post.ts @@ -27,7 +27,7 @@ export default defineEventHandler(async (event) => { try { await fs.rename(fullSourcePath, fullDestPath); - prisma.media.update({ + await prisma.media.update({ where: { id: sourceId as number }, diff --git a/server/api/v1/media/new-dir.post.ts b/server/api/v1/media/new-dir.post.ts index a02cda0..a852037 100644 --- a/server/api/v1/media/new-dir.post.ts +++ b/server/api/v1/media/new-dir.post.ts @@ -1,12 +1,30 @@ import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import {PrismaClient} from "@prisma/client"; +import {FileOperationPatternKind} from "vscode-languageserver-protocol"; +import folder = FileOperationPatternKind.folder; const prisma = new PrismaClient(); export default defineEventHandler(async (event) => { - const { dirPath } = await readBody(event); + const processFolderName = (input: string) => { + let temp = input.split('/') + if(temp.length > 1){ + return temp.at(temp.length - 1) as string; + } + return input + } + const processPseudoDir = (input: string) => { + if(input === ''){ + return '/' + } else { + return input + } + } + + const { targetPath, folderName } = await readBody(event); const header = getHeader(event, 'Authorization'); + // Sample input: targetPath is "Images", or "Images/AnotherFolder", or "" if (!header) { throw createError({ statusMessage: 'Unauthorized, please re-login.', @@ -14,28 +32,30 @@ export default defineEventHandler(async (event) => { }); } - if (!dirPath) { + if (targetPath == null) { throw createError({ statusCode: 400, statusMessage: 'No directory path provided.', }); } - const fullPath = path.join(process.cwd(), 'media', dirPath); + const fullPath = path.join(process.cwd(), 'media', targetPath); + const permalink = `/${path.join('media', path.join(targetPath, folderName))}`; try { await fs.mkdir(fullPath, { recursive: true }); - prisma.media.create({ + await prisma.media.create({ data: { - url: dirPath, - fileName: dirPath.split('/')[dirPath.length - 1], - directory: dirPath, - isFolder: true + url: permalink, + fileName: folderName, + directory: fullPath, + isFolder: true, + pseudoDirectory: processPseudoDir(targetPath) } }) - return { success: true, message: `Directory created: ${dirPath}` }; + return { success: true, message: `Directory created: ${folderName}` }; } catch (error) { console.error('Error creating directory:', error); throw createError({ diff --git a/server/api/v1/media/upload.post.ts b/server/api/v1/media/upload.post.ts index 3095d91..9768cdb 100644 --- a/server/api/v1/media/upload.post.ts +++ b/server/api/v1/media/upload.post.ts @@ -2,13 +2,25 @@ import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import { randomUUID } from 'node:crypto'; import {PrismaClient} from "@prisma/client"; +import {target} from "@vue/devtools-shared"; const prisma = new PrismaClient(); export default defineEventHandler(async (event) => { - const { file, name } = await readBody(event); + const form = await readMultipartFormData(event); const header = getHeader(event, 'Authorization'); + const query = getQuery(event); + const targetPath = query.targetPath as string + // Sample input: target directory is "Images", or "Images/AnotherFolder", or ""; default value is "" const config = useRuntimeConfig(); + const processPseudoDir = (input: string) => { + if(input === ''){ + return '/' + } else { + return input + } + } + if (!header) { throw createError({ statusMessage: 'Unauthorized, please re-login.', @@ -16,36 +28,39 @@ export default defineEventHandler(async (event) => { }); } - if (!file || !name) { + if (!form?.at(0)?.data || !form?.at(0)?.filename) { throw createError({ statusCode: 400, statusMessage: 'No file or name identifier provided.', }); } + // Generate a unique filename - const fileExtension = path.extname(name); + const fileExtension = path.extname(form?.at(0)?.filename || ''); const uniqueFilename = `${randomUUID()}${fileExtension}`; // Define the media directory and ensure it exists - const mediaDir = path.join(process.cwd(), 'media'); + const mediaDir = path.join(process.cwd(), 'media', targetPath) await fs.mkdir(mediaDir, { recursive: true }); // Define the file path - const filePath = path.join(mediaDir, uniqueFilename); + const nativeFilePath = path.join(mediaDir, uniqueFilename); try { // Write the file to the server - await fs.writeFile(filePath, Buffer.from(await file.arrayBuffer())); + await fs.writeFile(nativeFilePath, form?.at(0)?.data as any as Buffer); // Generate a permalink - const permalink = `/media/${uniqueFilename}`; + const permalink = `/${path.join('media', path.join(targetPath, uniqueFilename))}`; + console.log(permalink); - prisma.media.create({ + await prisma.media.create({ data: { fileName: uniqueFilename, url: permalink, - directory: filePath + directory: nativeFilePath, + pseudoDirectory: processPseudoDir(targetPath) } }) @@ -63,6 +78,6 @@ export default defineEventHandler(async (event) => { }); interface MediaFile { - file: File; + file: Promise; name: string; } \ No newline at end of file diff --git a/server/middleware/serveMedia.ts b/server/middleware/serveMedia.ts index add76cd..c689955 100644 --- a/server/middleware/serveMedia.ts +++ b/server/middleware/serveMedia.ts @@ -1,24 +1,31 @@ // server/middleware/serveMedia.ts import { serveStatic } from 'h3' -import {readFile, stat} from "node:fs/promises"; -import {join} from "pathe"; +import { readFile, stat } from "node:fs/promises"; +import { join } from "pathe"; const publicDir = "media"; -export default defineEventHandler((event) => { - return serveStatic(event, { - getContents: (id) => readFile(join(publicDir, id)), - getMeta: async (id) => { - const stats = await stat(join(publicDir, id)).catch(() => {}); +export default defineEventHandler(async (event) => { + const url = getRequestURL(event) - if (!stats || !stats.isFile()) { - return; - } + // Only handle requests that start with /media + if (url.pathname.startsWith('/media')) { + const filePath = url.pathname.slice(7) // Remove '/media/' from the start - return { - size: stats.size, - mtime: stats.mtimeMs, - }; - }, - }); + return serveStatic(event, { + getContents: () => readFile(join(publicDir, filePath)), + getMeta: async () => { + const stats = await stat(join(publicDir, filePath)).catch(() => {}); + + if (!stats || !stats.isFile()) { + return; + } + + return { + size: stats.size, + mtime: stats.mtimeMs, + }; + }, + }); + } }) \ No newline at end of file From 9e89e2f88c9d380926f61c94beed260e9576b06c Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Thu, 11 Jul 2024 03:10:03 +0800 Subject: [PATCH 05/11] Changed Back Mechanic Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- pages/admin/media/[...dir].vue | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/pages/admin/media/[...dir].vue b/pages/admin/media/[...dir].vue index cbd8adf..6be06b4 100644 --- a/pages/admin/media/[...dir].vue +++ b/pages/admin/media/[...dir].vue @@ -6,16 +6,31 @@ import type {FormError, FormSubmitEvent} from "#ui/types"; definePageMeta({ middleware: ['check-auth'] }) +const parseRouteDir = () => { + return parseArrayRouteDir(Array.from($route.params.dir)) +} +const parseArrayRouteDir = (arr: string[]) => { + if(arr.length == 0) return '/' + if(arr.length == 1) return `${arr[0]}` + + let temp = arr[0] as string + for(let i = 1; i < arr.length; i++) { + if(arr[i] == '') continue; + temp += `/${arr[i]}` + } + + return temp +} const $route = useRoute(), $media = useMedia(), $toast = useToast() -const $dir = $route.params.dir as string || '/'; +const $dir = parseRouteDir(); const lastDirAsRoute = () => { // NOT DIRECTORY! FOR ROUTE ONLY! - let temp = `${$dir}`.split('/') + let temp = $dir.split('/') if(temp.length <= 1) - return '/media' + return '/' else { - return temp.at(temp.length - 2) == '' ? '/media' : '/media' + temp.at(temp.length - 2) + return temp.at(temp.length - 2) == '' ? '/' : '/' + parseArrayRouteDir(temp.splice(0, temp.length - 1)) } } // console.log($dir); @@ -103,7 +118,8 @@ async function onNewDirSubmit(event: FormSubmitEvent) { return } - const {data, error} = await $media.createDirectory($dir, `${dirState.dirName}`) + console.log($dir) + const {data, error} = await $media.createDirectory(`${$dir}`, `${dirState.dirName}`) if(error.value as any){ $toast.add({ title: error.value?.statusMessage || 'Unknown Error Occurred', color: 'red' }) @@ -154,7 +170,7 @@ function parseAndFormatDate(dateString: string): string {
{{$dir != '/' ? '/'+$dir : $dir + ' (Root)'}} - + Selected {{selected.length}} Item(s) From 691bc4ea431e01cd3535f482f5662ff134165054 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:41:25 +0800 Subject: [PATCH 06/11] Using Nuxt 4 Compatibility Version Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- app.config.ts => app/app.config.ts | 0 app.vue => app/app.vue | 0 {assets => app/assets}/images/SHULlogo.png | Bin {assets => app/assets}/images/asset1.jpg | Bin {assets => app/assets}/images/asset2.jpg | Bin {assets => app/assets}/images/asset3.jpg | Bin {assets => app/assets}/images/biphlogo.jpg | Bin .../assets}/images/bss_landscape.png | Bin .../assets}/images/bssiconandtext-nobg.png | Bin .../assets}/images/hero/bbsz_hero.png | Bin .../assets}/images/hero/biph_hero.png | Bin .../assets}/images/hero/bisz_hero.png | Bin .../assets}/images/hero/ncpa_hero.png | Bin .../assets}/images/hero/scie_hero.png | Bin .../assets}/images/hero/tsing_hero.png | Bin .../assets}/images/hero/ulc_hero.png | Bin .../assets}/images/hero/vanke_hero.png | Bin {assets => app/assets}/shul-logo.jpg | Bin .../components}/TiptapEditor.vue | 0 .../components}/WebsiteFooter.vue | 0 .../components}/WebsiteHeader.vue | 0 .../composables}/useArticles.ts | 0 {composables => app/composables}/useAuth.ts | 0 .../composables}/useMatches.ts | 0 {composables => app/composables}/useMedia.ts | 0 .../composables}/useServerAuth.ts | 0 {composables => app/composables}/useTeams.ts | 0 {layouts => app/layouts}/DashboardLayout.vue | 0 {layouts => app/layouts}/LandingSection.vue | 0 {layouts => app/layouts}/MainLayout.vue | 0 {middleware => app/middleware}/check-auth.ts | 0 .../pages}/admin/article/[articleId].vue | 0 {pages => app/pages}/admin/articles.vue | 0 {pages => app/pages}/admin/index.vue | 0 .../pages}/admin/match/[matchId].vue | 0 {pages => app/pages}/admin/matches.vue | 0 {pages => app/pages}/admin/team/[teamId].vue | 0 {pages => app/pages}/admin/teams.vue | 0 {pages => app/pages}/admin/users.vue | 0 .../pages}/articles/[articleSlug].vue | 0 {pages => app/pages}/articles/index.vue | 0 {pages => app/pages}/auth.vue | 0 {pages => app/pages}/error.vue | 0 {pages => app/pages}/index.vue | 0 {pages => app/pages}/leagues.vue | 0 {pages => app/pages}/matches.vue | 0 nuxt.config.ts | 4 + package-lock.json | 862 +++++++++++++----- package.json | 4 +- pages/admin/media/[...dir].vue | 250 ----- 50 files changed, 651 insertions(+), 469 deletions(-) rename app.config.ts => app/app.config.ts (100%) rename app.vue => app/app.vue (100%) rename {assets => app/assets}/images/SHULlogo.png (100%) rename {assets => app/assets}/images/asset1.jpg (100%) rename {assets => app/assets}/images/asset2.jpg (100%) rename {assets => app/assets}/images/asset3.jpg (100%) rename {assets => app/assets}/images/biphlogo.jpg (100%) rename {assets => app/assets}/images/bss_landscape.png (100%) rename {assets => app/assets}/images/bssiconandtext-nobg.png (100%) rename {assets => app/assets}/images/hero/bbsz_hero.png (100%) rename {assets => app/assets}/images/hero/biph_hero.png (100%) rename {assets => app/assets}/images/hero/bisz_hero.png (100%) rename {assets => app/assets}/images/hero/ncpa_hero.png (100%) rename {assets => app/assets}/images/hero/scie_hero.png (100%) rename {assets => app/assets}/images/hero/tsing_hero.png (100%) rename {assets => app/assets}/images/hero/ulc_hero.png (100%) rename {assets => app/assets}/images/hero/vanke_hero.png (100%) rename {assets => app/assets}/shul-logo.jpg (100%) rename {components => app/components}/TiptapEditor.vue (100%) rename {components => app/components}/WebsiteFooter.vue (100%) rename {components => app/components}/WebsiteHeader.vue (100%) rename {composables => app/composables}/useArticles.ts (100%) rename {composables => app/composables}/useAuth.ts (100%) rename {composables => app/composables}/useMatches.ts (100%) rename {composables => app/composables}/useMedia.ts (100%) rename {composables => app/composables}/useServerAuth.ts (100%) rename {composables => app/composables}/useTeams.ts (100%) rename {layouts => app/layouts}/DashboardLayout.vue (100%) rename {layouts => app/layouts}/LandingSection.vue (100%) rename {layouts => app/layouts}/MainLayout.vue (100%) rename {middleware => app/middleware}/check-auth.ts (100%) rename {pages => app/pages}/admin/article/[articleId].vue (100%) rename {pages => app/pages}/admin/articles.vue (100%) rename {pages => app/pages}/admin/index.vue (100%) rename {pages => app/pages}/admin/match/[matchId].vue (100%) rename {pages => app/pages}/admin/matches.vue (100%) rename {pages => app/pages}/admin/team/[teamId].vue (100%) rename {pages => app/pages}/admin/teams.vue (100%) rename {pages => app/pages}/admin/users.vue (100%) rename {pages => app/pages}/articles/[articleSlug].vue (100%) rename {pages => app/pages}/articles/index.vue (100%) rename {pages => app/pages}/auth.vue (100%) rename {pages => app/pages}/error.vue (100%) rename {pages => app/pages}/index.vue (100%) rename {pages => app/pages}/leagues.vue (100%) rename {pages => app/pages}/matches.vue (100%) delete mode 100644 pages/admin/media/[...dir].vue diff --git a/app.config.ts b/app/app.config.ts similarity index 100% rename from app.config.ts rename to app/app.config.ts diff --git a/app.vue b/app/app.vue similarity index 100% rename from app.vue rename to app/app.vue diff --git a/assets/images/SHULlogo.png b/app/assets/images/SHULlogo.png similarity index 100% rename from assets/images/SHULlogo.png rename to app/assets/images/SHULlogo.png diff --git a/assets/images/asset1.jpg b/app/assets/images/asset1.jpg similarity index 100% rename from assets/images/asset1.jpg rename to app/assets/images/asset1.jpg diff --git a/assets/images/asset2.jpg b/app/assets/images/asset2.jpg similarity index 100% rename from assets/images/asset2.jpg rename to app/assets/images/asset2.jpg diff --git a/assets/images/asset3.jpg b/app/assets/images/asset3.jpg similarity index 100% rename from assets/images/asset3.jpg rename to app/assets/images/asset3.jpg diff --git a/assets/images/biphlogo.jpg b/app/assets/images/biphlogo.jpg similarity index 100% rename from assets/images/biphlogo.jpg rename to app/assets/images/biphlogo.jpg diff --git a/assets/images/bss_landscape.png b/app/assets/images/bss_landscape.png similarity index 100% rename from assets/images/bss_landscape.png rename to app/assets/images/bss_landscape.png diff --git a/assets/images/bssiconandtext-nobg.png b/app/assets/images/bssiconandtext-nobg.png similarity index 100% rename from assets/images/bssiconandtext-nobg.png rename to app/assets/images/bssiconandtext-nobg.png diff --git a/assets/images/hero/bbsz_hero.png b/app/assets/images/hero/bbsz_hero.png similarity index 100% rename from assets/images/hero/bbsz_hero.png rename to app/assets/images/hero/bbsz_hero.png diff --git a/assets/images/hero/biph_hero.png b/app/assets/images/hero/biph_hero.png similarity index 100% rename from assets/images/hero/biph_hero.png rename to app/assets/images/hero/biph_hero.png diff --git a/assets/images/hero/bisz_hero.png b/app/assets/images/hero/bisz_hero.png similarity index 100% rename from assets/images/hero/bisz_hero.png rename to app/assets/images/hero/bisz_hero.png diff --git a/assets/images/hero/ncpa_hero.png b/app/assets/images/hero/ncpa_hero.png similarity index 100% rename from assets/images/hero/ncpa_hero.png rename to app/assets/images/hero/ncpa_hero.png diff --git a/assets/images/hero/scie_hero.png b/app/assets/images/hero/scie_hero.png similarity index 100% rename from assets/images/hero/scie_hero.png rename to app/assets/images/hero/scie_hero.png diff --git a/assets/images/hero/tsing_hero.png b/app/assets/images/hero/tsing_hero.png similarity index 100% rename from assets/images/hero/tsing_hero.png rename to app/assets/images/hero/tsing_hero.png diff --git a/assets/images/hero/ulc_hero.png b/app/assets/images/hero/ulc_hero.png similarity index 100% rename from assets/images/hero/ulc_hero.png rename to app/assets/images/hero/ulc_hero.png diff --git a/assets/images/hero/vanke_hero.png b/app/assets/images/hero/vanke_hero.png similarity index 100% rename from assets/images/hero/vanke_hero.png rename to app/assets/images/hero/vanke_hero.png diff --git a/assets/shul-logo.jpg b/app/assets/shul-logo.jpg similarity index 100% rename from assets/shul-logo.jpg rename to app/assets/shul-logo.jpg diff --git a/components/TiptapEditor.vue b/app/components/TiptapEditor.vue similarity index 100% rename from components/TiptapEditor.vue rename to app/components/TiptapEditor.vue diff --git a/components/WebsiteFooter.vue b/app/components/WebsiteFooter.vue similarity index 100% rename from components/WebsiteFooter.vue rename to app/components/WebsiteFooter.vue diff --git a/components/WebsiteHeader.vue b/app/components/WebsiteHeader.vue similarity index 100% rename from components/WebsiteHeader.vue rename to app/components/WebsiteHeader.vue diff --git a/composables/useArticles.ts b/app/composables/useArticles.ts similarity index 100% rename from composables/useArticles.ts rename to app/composables/useArticles.ts diff --git a/composables/useAuth.ts b/app/composables/useAuth.ts similarity index 100% rename from composables/useAuth.ts rename to app/composables/useAuth.ts diff --git a/composables/useMatches.ts b/app/composables/useMatches.ts similarity index 100% rename from composables/useMatches.ts rename to app/composables/useMatches.ts diff --git a/composables/useMedia.ts b/app/composables/useMedia.ts similarity index 100% rename from composables/useMedia.ts rename to app/composables/useMedia.ts diff --git a/composables/useServerAuth.ts b/app/composables/useServerAuth.ts similarity index 100% rename from composables/useServerAuth.ts rename to app/composables/useServerAuth.ts diff --git a/composables/useTeams.ts b/app/composables/useTeams.ts similarity index 100% rename from composables/useTeams.ts rename to app/composables/useTeams.ts diff --git a/layouts/DashboardLayout.vue b/app/layouts/DashboardLayout.vue similarity index 100% rename from layouts/DashboardLayout.vue rename to app/layouts/DashboardLayout.vue diff --git a/layouts/LandingSection.vue b/app/layouts/LandingSection.vue similarity index 100% rename from layouts/LandingSection.vue rename to app/layouts/LandingSection.vue diff --git a/layouts/MainLayout.vue b/app/layouts/MainLayout.vue similarity index 100% rename from layouts/MainLayout.vue rename to app/layouts/MainLayout.vue diff --git a/middleware/check-auth.ts b/app/middleware/check-auth.ts similarity index 100% rename from middleware/check-auth.ts rename to app/middleware/check-auth.ts diff --git a/pages/admin/article/[articleId].vue b/app/pages/admin/article/[articleId].vue similarity index 100% rename from pages/admin/article/[articleId].vue rename to app/pages/admin/article/[articleId].vue diff --git a/pages/admin/articles.vue b/app/pages/admin/articles.vue similarity index 100% rename from pages/admin/articles.vue rename to app/pages/admin/articles.vue diff --git a/pages/admin/index.vue b/app/pages/admin/index.vue similarity index 100% rename from pages/admin/index.vue rename to app/pages/admin/index.vue diff --git a/pages/admin/match/[matchId].vue b/app/pages/admin/match/[matchId].vue similarity index 100% rename from pages/admin/match/[matchId].vue rename to app/pages/admin/match/[matchId].vue diff --git a/pages/admin/matches.vue b/app/pages/admin/matches.vue similarity index 100% rename from pages/admin/matches.vue rename to app/pages/admin/matches.vue diff --git a/pages/admin/team/[teamId].vue b/app/pages/admin/team/[teamId].vue similarity index 100% rename from pages/admin/team/[teamId].vue rename to app/pages/admin/team/[teamId].vue diff --git a/pages/admin/teams.vue b/app/pages/admin/teams.vue similarity index 100% rename from pages/admin/teams.vue rename to app/pages/admin/teams.vue diff --git a/pages/admin/users.vue b/app/pages/admin/users.vue similarity index 100% rename from pages/admin/users.vue rename to app/pages/admin/users.vue diff --git a/pages/articles/[articleSlug].vue b/app/pages/articles/[articleSlug].vue similarity index 100% rename from pages/articles/[articleSlug].vue rename to app/pages/articles/[articleSlug].vue diff --git a/pages/articles/index.vue b/app/pages/articles/index.vue similarity index 100% rename from pages/articles/index.vue rename to app/pages/articles/index.vue diff --git a/pages/auth.vue b/app/pages/auth.vue similarity index 100% rename from pages/auth.vue rename to app/pages/auth.vue diff --git a/pages/error.vue b/app/pages/error.vue similarity index 100% rename from pages/error.vue rename to app/pages/error.vue diff --git a/pages/index.vue b/app/pages/index.vue similarity index 100% rename from pages/index.vue rename to app/pages/index.vue diff --git a/pages/leagues.vue b/app/pages/leagues.vue similarity index 100% rename from pages/leagues.vue rename to app/pages/leagues.vue diff --git a/pages/matches.vue b/app/pages/matches.vue similarity index 100% rename from pages/matches.vue rename to app/pages/matches.vue diff --git a/nuxt.config.ts b/nuxt.config.ts index 942871d..bc7698c 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,5 +1,9 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ + future: { + compatibilityVersion: 4, + }, + devtools: { enabled: true }, extends: ['@nuxt/ui-pro'], diff --git a/package-lock.json b/package-lock.json index 42c42b2..6e797d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,6 @@ "@types/formidable": "^3.4.5", "formidable": "^3.5.1", "jsonwebtoken": "^9.0.2", - "minio": "^8.0.1", - "nuxt": "^3.12.2", "nuxt-tiptap-editor": "^1.1.2", "pinia": "^2.1.7", "uuid": "^10.0.0", @@ -31,6 +29,8 @@ "zod": "^3.23.8" }, "devDependencies": { + "@types/minio": "^7.1.1", + "nuxt": "^3.12.3", "nuxt-file-storage": "^0.2.6" } }, @@ -172,28 +172,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/compat-data/-/compat-data-7.24.8.tgz", + "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/core/-/core-7.24.8.tgz", + "integrity": "sha512-6AWcmZC/MZCO0yKys4uhg5NlxL0ESF3K6IAaoQ+xSXvPyPyxNWRafP+GDbI88Oh68O7QkJgmEtedWPM9U0pZNg==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -217,11 +217,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/generator/-/generator-7.24.8.tgz", + "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.24.8", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -234,6 +234,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, "dependencies": { "@babel/types": "^7.24.7" }, @@ -242,13 +243,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -265,14 +266,15 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", + "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -290,6 +292,7 @@ "version": "6.3.1", "resolved": "http://npm.117112.xyz/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -329,12 +332,13 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -353,9 +357,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", + "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -374,6 +378,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, "dependencies": { "@babel/types": "^7.24.7" }, @@ -382,9 +387,10 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -393,6 +399,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.7", @@ -421,6 +428,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -441,9 +449,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } @@ -457,20 +465,20 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dependencies": { "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -536,9 +544,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "bin": { "parser": "bin/babel-parser.js" }, @@ -550,6 +558,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -566,6 +575,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -580,6 +590,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -594,6 +605,7 @@ "version": "7.10.4", "resolved": "http://npm.117112.xyz/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -605,6 +617,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -619,6 +632,7 @@ "version": "7.24.7", "resolved": "http://npm.117112.xyz/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -630,13 +644,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", - "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz", + "integrity": "sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { @@ -647,9 +662,9 @@ } }, "node_modules/@babel/standalone": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/standalone/-/standalone-7.24.7.tgz", - "integrity": "sha512-QRIRMJ2KTeN+vt4l9OjYlxDVXEpcor1Z6V7OeYzeBOw6Q8ew9oMTHjzTx8s6ClsZO7wVf6JgTRutihatN6K0yA==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/standalone/-/standalone-7.24.8.tgz", + "integrity": "sha512-qo6KonLh/hNmzRrg70rWc3noctWIh6oXuyBIa2RZlSqJpIGKvrSTWaI4zlOGZS19ChfA5uSEGuaXdN4xs6G+Cw==", "engines": { "node": ">=6.9.0" } @@ -668,18 +683,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", + "@babel/generator": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -688,11 +703,11 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "http://npm.117112.xyz/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.24.8", + "resolved": "http://npm.117112.xyz/@babel/types/-/types-7.24.8.tgz", + "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -719,6 +734,7 @@ "version": "0.3.4", "resolved": "http://npm.117112.xyz/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz", "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==", + "dev": true, "dependencies": { "mime": "^3.0.0" }, @@ -1014,6 +1030,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -1110,6 +1127,7 @@ "version": "2.1.1", "resolved": "http://npm.117112.xyz/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, "engines": { "node": ">=14" } @@ -1148,17 +1166,17 @@ } }, "node_modules/@iconify/collections": { - "version": "1.0.437", - "resolved": "http://npm.117112.xyz/@iconify/collections/-/collections-1.0.437.tgz", - "integrity": "sha512-eGY1y8dP94zAh0a8hslIsQ6GofWzNwXKXXMW5F+rEr+EL+yO0RrDxYJOKTnYYvqzNsCBbmNr9kgX17OGQWeaEA==", + "version": "1.0.438", + "resolved": "http://npm.117112.xyz/@iconify/collections/-/collections-1.0.438.tgz", + "integrity": "sha512-ALVdSPaJW06TZubNHTCYqsWCYPV+InHZwU4foqRzQaCDFN5V5s+SB41wsjD/DkZlSJ3p3jAmKn5xeNMoeCyskQ==", "dependencies": { "@iconify/types": "*" } }, "node_modules/@iconify/json": { - "version": "2.2.225", - "resolved": "http://npm.117112.xyz/@iconify/json/-/json-2.2.225.tgz", - "integrity": "sha512-3MxzXdrxDxItlGxvTmLnbZGlvGcwuBIOofJfyobq097lysZasvsNddFguiWecmKP91nRR4I2ik7enFVQ9Lz3mg==", + "version": "2.2.226", + "resolved": "http://npm.117112.xyz/@iconify/json/-/json-2.2.226.tgz", + "integrity": "sha512-FHqOK4ikmlq2pYODzsvfozUaM32m2zqEZB8QlBOepO29GpXkqdHY6iqkm4KcAJMcT/OZ7YfCpW3i6VesOThqPA==", "dependencies": { "@iconify/types": "*", "pathe": "^1.1.2" @@ -1200,7 +1218,8 @@ "node_modules/@ioredis/commands": { "version": "1.2.0", "resolved": "http://npm.117112.xyz/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "devOptional": true }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -1324,15 +1343,16 @@ "version": "0.3.6", "resolved": "http://npm.117112.xyz/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "http://npm.117112.xyz/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "http://npm.117112.xyz/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -1362,6 +1382,7 @@ "version": "1.1.1", "resolved": "http://npm.117112.xyz/@kwsites/file-exists/-/file-exists-1.1.1.tgz", "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, "dependencies": { "debug": "^4.1.1" } @@ -1369,12 +1390,14 @@ "node_modules/@kwsites/promise-deferred": { "version": "1.1.1", "resolved": "http://npm.117112.xyz/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "http://npm.117112.xyz/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -1394,6 +1417,7 @@ "version": "2.0.3", "resolved": "http://npm.117112.xyz/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, "engines": { "node": ">=8" } @@ -1402,6 +1426,7 @@ "version": "2.8.1", "resolved": "http://npm.117112.xyz/@netlify/functions/-/functions-2.8.1.tgz", "integrity": "sha512-+6wtYdoz0yE06dSa9XkP47tw5zm6g13QMeCwM3MmHx1vn8hzwFa51JtmfraprdkL7amvb7gaNM+OOhQU1h6T8A==", + "dev": true, "dependencies": { "@netlify/serverless-functions-api": "1.19.1" }, @@ -1413,6 +1438,7 @@ "version": "0.1.0", "resolved": "http://npm.117112.xyz/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "dev": true, "engines": { "node": "^14.16.0 || >=16.0.0" } @@ -1421,6 +1447,7 @@ "version": "1.19.1", "resolved": "http://npm.117112.xyz/@netlify/serverless-functions-api/-/serverless-functions-api-1.19.1.tgz", "integrity": "sha512-2KYkyluThg1AKfd0JWI7FzpS4A/fzVVGYIf6AM4ydWyNj8eI/86GQVLeRgDoH7CNOxt243R5tutWlmHpVq0/Ew==", + "dev": true, "dependencies": { "@netlify/node-cookies": "^0.1.0", "urlpattern-polyfill": "8.0.2" @@ -1464,12 +1491,14 @@ "node_modules/@nuxt/devalue": { "version": "2.0.2", "resolved": "http://npm.117112.xyz/@nuxt/devalue/-/devalue-2.0.2.tgz", - "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==" + "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==", + "dev": true }, "node_modules/@nuxt/devtools": { "version": "1.3.9", "resolved": "http://npm.117112.xyz/@nuxt/devtools/-/devtools-1.3.9.tgz", "integrity": "sha512-tFKlbUPgSXw4tyD8xpztQtJeVn3egdKbFCV0xc92FbfGbclAyaa3XhKA2tMWXEGZQpykAWMRNrGWN24FtXFA6Q==", + "dev": true, "dependencies": { "@antfu/utils": "^0.7.10", "@nuxt/devtools-kit": "1.3.9", @@ -1533,6 +1562,7 @@ "version": "1.3.9", "resolved": "http://npm.117112.xyz/@nuxt/devtools-wizard/-/devtools-wizard-1.3.9.tgz", "integrity": "sha512-WMgwWWuyng+Y6k7sfBI95wYnec8TPFkuYbHHOlYQgqE9dAewPisSbEm3WkB7p/W9UqxpN8mvKN5qUg4sTmEpgQ==", + "dev": true, "dependencies": { "consola": "^3.2.3", "diff": "^5.2.0", @@ -1553,6 +1583,7 @@ "version": "3.0.1", "resolved": "http://npm.117112.xyz/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -1668,6 +1699,7 @@ "version": "2.5.4", "resolved": "http://npm.117112.xyz/@nuxt/telemetry/-/telemetry-2.5.4.tgz", "integrity": "sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==", + "dev": true, "dependencies": { "@nuxt/kit": "^3.11.2", "ci-info": "^4.0.0", @@ -1745,6 +1777,7 @@ "version": "3.12.3", "resolved": "http://npm.117112.xyz/@nuxt/vite-builder/-/vite-builder-3.12.3.tgz", "integrity": "sha512-8xfeOgSUaXTYgLx1DA5qEFwU3/vL5DVAIv8sgPn2rnmB50nPJVXrVa+tXhO0I1Q8L4ycXRqq2dxOPGq8CSYo+A==", + "dev": true, "dependencies": { "@nuxt/kit": "3.12.3", "@rollup/plugin-replace": "^5.0.7", @@ -1794,6 +1827,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "aix" @@ -1809,6 +1843,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -1824,6 +1859,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -1839,6 +1875,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -1854,6 +1891,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1869,6 +1907,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -1884,6 +1923,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -1899,6 +1939,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -1914,6 +1955,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1929,6 +1971,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1944,6 +1987,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1959,6 +2003,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1974,6 +2019,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -1989,6 +2035,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -2004,6 +2051,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -2019,6 +2067,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -2034,6 +2083,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -2049,6 +2099,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -2064,6 +2115,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -2079,6 +2131,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -2094,6 +2147,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -2109,6 +2163,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -2124,6 +2179,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -2136,6 +2192,7 @@ "version": "0.23.0", "resolved": "http://npm.117112.xyz/esbuild/-/esbuild-0.23.0.tgz", "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -2174,6 +2231,7 @@ "version": "3.0.3", "resolved": "http://npm.117112.xyz/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -2232,20 +2290,20 @@ } }, "node_modules/@nuxtjs/tailwindcss": { - "version": "6.12.0", - "resolved": "http://npm.117112.xyz/@nuxtjs/tailwindcss/-/tailwindcss-6.12.0.tgz", - "integrity": "sha512-vXvEq8z177TQcx0tc10mw3O6T9WeN0iTL8hIKGDfidmr+HKReexJU01aPgHefFrCu4LJB70egYFYnywzB9lMyQ==", + "version": "6.12.1", + "resolved": "http://npm.117112.xyz/@nuxtjs/tailwindcss/-/tailwindcss-6.12.1.tgz", + "integrity": "sha512-UKmaPRVpxlFqLorhL6neEba2tySlsj6w6yDb7jzS6A0AAjyBQ6k3BQqWO+AaTy2iQLX7eR+1yj3/w43HzY8RtA==", "dependencies": { - "@nuxt/kit": "^3.11.2", + "@nuxt/kit": "^3.12.3", "autoprefixer": "^10.4.19", "consola": "^3.2.3", "defu": "^6.1.4", - "h3": "^1.11.1", + "h3": "^1.12.0", "pathe": "^1.1.2", "postcss": "^8.4.38", - "postcss-nesting": "^12.1.1", - "tailwind-config-viewer": "^2.0.1", - "tailwindcss": "~3.4.3", + "postcss-nesting": "^12.1.5", + "tailwind-config-viewer": "^2.0.4", + "tailwindcss": "~3.4.4", "ufo": "^1.5.3", "unctx": "^2.3.1" } @@ -2571,9 +2629,9 @@ } }, "node_modules/@prisma/client": { - "version": "5.16.1", - "resolved": "http://npm.117112.xyz/@prisma/client/-/client-5.16.1.tgz", - "integrity": "sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==", + "version": "5.16.2", + "resolved": "http://npm.117112.xyz/@prisma/client/-/client-5.16.2.tgz", + "integrity": "sha512-+1lmkhR9gHWcTC5oghm2ZKpWljyWdzfazCVlLKUWXVmwHSf52g81aZ8qb6Km5Bs025yBi7puLp3qSLEvktoUtw==", "hasInstallScript": true, "engines": { "node": ">=16.13" @@ -2596,6 +2654,7 @@ "version": "5.1.0", "resolved": "http://npm.117112.xyz/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz", "integrity": "sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==", + "dev": true, "dependencies": { "slash": "^4.0.0" }, @@ -2615,6 +2674,7 @@ "version": "4.0.0", "resolved": "http://npm.117112.xyz/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, "engines": { "node": ">=12" }, @@ -2626,6 +2686,7 @@ "version": "25.0.8", "resolved": "http://npm.117112.xyz/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", + "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -2650,6 +2711,7 @@ "version": "2.0.1", "resolved": "http://npm.117112.xyz/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -2659,6 +2721,7 @@ "resolved": "http://npm.117112.xyz/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2677,6 +2740,7 @@ "version": "5.1.6", "resolved": "http://npm.117112.xyz/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2688,6 +2752,7 @@ "version": "5.0.5", "resolved": "http://npm.117112.xyz/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", @@ -2709,6 +2774,7 @@ "version": "6.1.0", "resolved": "http://npm.117112.xyz/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, "dependencies": { "@rollup/pluginutils": "^5.1.0" }, @@ -2728,6 +2794,7 @@ "version": "15.2.3", "resolved": "http://npm.117112.xyz/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -2752,6 +2819,7 @@ "version": "5.0.7", "resolved": "http://npm.117112.xyz/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz", "integrity": "sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==", + "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "magic-string": "^0.30.3" @@ -2772,6 +2840,7 @@ "version": "0.4.4", "resolved": "http://npm.117112.xyz/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", @@ -3091,20 +3160,20 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.8.2", - "resolved": "http://npm.117112.xyz/@tanstack/virtual-core/-/virtual-core-3.8.2.tgz", - "integrity": "sha512-ffpN6kTaPGwQPoWMcBAHbdv2ZCpj1SugldoYAcY0C4xH+Pej1KCOEUisNeEgbUnXOp8Y/4q6wGPu2tFHthOIQw==", + "version": "3.8.3", + "resolved": "http://npm.117112.xyz/@tanstack/virtual-core/-/virtual-core-3.8.3.tgz", + "integrity": "sha512-vd2A2TnM5lbnWZnHi9B+L2gPtkSeOtJOAw358JqokIH1+v2J7vUAzFVPwB/wrye12RFOurffXu33plm4uQ+JBQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/vue-virtual": { - "version": "3.8.2", - "resolved": "http://npm.117112.xyz/@tanstack/vue-virtual/-/vue-virtual-3.8.2.tgz", - "integrity": "sha512-mVix+nFKajrA+48ky5s7/IYP5/uHHLTz1ZRJfwg2bOLcHUcKyvsLE2UGG4+8hd62ueprWg5MgTudGyR2TYfwpw==", + "version": "3.8.3", + "resolved": "http://npm.117112.xyz/@tanstack/vue-virtual/-/vue-virtual-3.8.3.tgz", + "integrity": "sha512-xrFLkOiqLoGwohgr1+Q880hkNdQWqwi19EXzx38iAjVEm1Db3KIAV0aVP57/dnNXU3NO1Vx8wnIHII5J4n1LyA==", "dependencies": { - "@tanstack/virtual-core": "3.8.2" + "@tanstack/virtual-core": "3.8.3" }, "funding": { "type": "github", @@ -3514,6 +3583,7 @@ "version": "0.2.0", "resolved": "http://npm.117112.xyz/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "devOptional": true, "engines": { "node": ">=10.13.0" } @@ -3551,6 +3621,7 @@ "version": "1.17.14", "resolved": "http://npm.117112.xyz/@types/http-proxy/-/http-proxy-1.17.14.tgz", "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -3563,6 +3634,16 @@ "@types/unist": "*" } }, + "node_modules/@types/minio": { + "version": "7.1.1", + "resolved": "http://npm.117112.xyz/@types/minio/-/minio-7.1.1.tgz", + "integrity": "sha512-B7OWB7JwIxVBxypiS3gA96gaK4yo2UknGdqmuQsTccZZ/ABiQ2F3fTe9lZIXL6ZuN23l+mWIC3J4CefKNyWjxA==", + "deprecated": "This is a stub types definition. minio provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "minio": "*" + } + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "http://npm.117112.xyz/@types/ms/-/ms-0.7.34.tgz", @@ -3579,7 +3660,8 @@ "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "http://npm.117112.xyz/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "node_modules/@types/unist": { "version": "3.0.2", @@ -3600,6 +3682,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/@unhead/dom/-/dom-1.9.15.tgz", "integrity": "sha512-4sdP/2Unt4zFRO8pBZVXvebidGmrLEvnDU6ZpasZfInjiiuuaQOVTJaiKnEnug3cmW2YjglPG2d1c2xAsHr3NQ==", + "dev": true, "dependencies": { "@unhead/schema": "1.9.15", "@unhead/shared": "1.9.15" @@ -3612,6 +3695,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/@unhead/schema/-/schema-1.9.15.tgz", "integrity": "sha512-9ADZuXOH+tOKHIjXsgg+SPINnh/YJEBMCjpg+8VLGgE2r5med3jAnOU8g7ALfuVEBRBrbFgs1qVKoKm1NkTXJQ==", + "dev": true, "dependencies": { "hookable": "^5.5.3", "zhead": "^2.2.4" @@ -3624,6 +3708,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/@unhead/shared/-/shared-1.9.15.tgz", "integrity": "sha512-+U5r04eRtCNcniWjzNPRtwVuF9rW/6EXxhGvuohJBDaIE57J6BHWo5cEp7Pqts7DlTFs7LiDtH8ONNDv4QqRaw==", + "dev": true, "dependencies": { "@unhead/schema": "1.9.15" }, @@ -3635,6 +3720,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/@unhead/ssr/-/ssr-1.9.15.tgz", "integrity": "sha512-gqRQQkT1jzZKf9nF7r1exBtWbBi5QjGi7wa0y7cHPJ6aTPOyLVTeb9OvfC0MAP94JXgsZrgyQt8q8uD6N1tfTw==", + "dev": true, "dependencies": { "@unhead/schema": "1.9.15", "@unhead/shared": "1.9.15" @@ -3647,6 +3733,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/@unhead/vue/-/vue-1.9.15.tgz", "integrity": "sha512-h866wYOs6Q6+lc0av4EU0CPTtTvaz9UWwwsiNoulzJa95QyUN/gDPI/NiDuKweHswY+a0SSzEqe9Nhg+LlmHew==", + "dev": true, "dependencies": { "@unhead/schema": "1.9.15", "@unhead/shared": "1.9.15", @@ -3664,6 +3751,7 @@ "version": "0.26.5", "resolved": "http://npm.117112.xyz/@vercel/nft/-/nft-0.26.5.tgz", "integrity": "sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==", + "dev": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", "@rollup/pluginutils": "^4.0.0", @@ -3689,6 +3777,7 @@ "version": "4.2.1", "resolved": "http://npm.117112.xyz/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -3701,6 +3790,7 @@ "version": "5.0.5", "resolved": "http://npm.117112.xyz/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", + "dev": true, "engines": { "node": "^18.0.0 || >=20.0.0" }, @@ -3713,6 +3803,7 @@ "version": "4.0.0", "resolved": "http://npm.117112.xyz/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.0.0.tgz", "integrity": "sha512-A+6wL2AdQhDsLsDnY+2v4rRDI1HLJGIMc97a8FURO9tqKsH5QvjWrzsa5DH3NlZsM742W2wODl2fF+bfcTWtXw==", + "dev": true, "dependencies": { "@babel/core": "^7.24.6", "@babel/plugin-transform-typescript": "^7.24.6", @@ -3730,6 +3821,7 @@ "version": "1.10.4", "resolved": "http://npm.117112.xyz/@vue-macros/common/-/common-1.10.4.tgz", "integrity": "sha512-akO6Bd6U4jP0+ZKbHq6mbYkw1coOrJpLeVmkuMlUsT5wZRi11BjauGcZHusBSzUjgCBsa1kZTyipxrxrWB54Hw==", + "dev": true, "dependencies": { "@babel/types": "^7.24.5", "@rollup/pluginutils": "^5.1.0", @@ -3753,12 +3845,14 @@ "node_modules/@vue/babel-helper-vue-transform-on": { "version": "1.2.2", "resolved": "http://npm.117112.xyz/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz", - "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==" + "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==", + "dev": true }, "node_modules/@vue/babel-plugin-jsx": { "version": "1.2.2", "resolved": "http://npm.117112.xyz/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz", "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "~7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -3785,6 +3879,7 @@ "version": "7.22.15", "resolved": "http://npm.117112.xyz/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -3796,6 +3891,7 @@ "version": "1.2.2", "resolved": "http://npm.117112.xyz/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz", "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/helper-module-imports": "~7.22.15", @@ -3811,6 +3907,7 @@ "version": "7.22.15", "resolved": "http://npm.117112.xyz/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -3873,6 +3970,7 @@ "version": "7.3.3", "resolved": "http://npm.117112.xyz/@vue/devtools-core/-/devtools-core-7.3.3.tgz", "integrity": "sha512-i6Bwkx4OwfY0QVHjAdsivhlzZ2HMj7fbNRYJsWspQ+dkA1f3nTzycPqZmVUsm2TGkbQlhTMhCAdDoP97JKoc+g==", + "dev": true, "dependencies": { "@vue/devtools-kit": "^7.3.3", "@vue/devtools-shared": "^7.3.3", @@ -3886,6 +3984,7 @@ "version": "3.3.7", "resolved": "http://npm.117112.xyz/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -3903,6 +4002,7 @@ "version": "7.3.3", "resolved": "http://npm.117112.xyz/@vue/devtools-kit/-/devtools-kit-7.3.3.tgz", "integrity": "sha512-m+dFI57BrzKYPKq73mt4CJ5GWld5OLBseLHPHGVP7CaILNY9o1gWVJWAJeF8XtQ9LTiMxZSaK6NcBsFuxAhD0g==", + "dev": true, "dependencies": { "@vue/devtools-shared": "^7.3.3", "birpc": "^0.2.17", @@ -3917,6 +4017,7 @@ "version": "7.3.5", "resolved": "http://npm.117112.xyz/@vue/devtools-shared/-/devtools-shared-7.3.5.tgz", "integrity": "sha512-Rqii3VazmWTi67a86rYopi61n5Ved05EybJCwyrfoO9Ok3MaS/4yRFl706ouoISMlyrASJFEzM0/AiDA6w4f9A==", + "dev": true, "dependencies": { "rfdc": "^1.4.1" } @@ -4180,17 +4281,20 @@ "version": "0.9.0", "resolved": "http://npm.117112.xyz/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "dev": true, "optional": true }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "http://npm.117112.xyz/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "http://npm.117112.xyz/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -4225,6 +4329,7 @@ "version": "1.9.5", "resolved": "http://npm.117112.xyz/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, "peerDependencies": { "acorn": "^8" } @@ -4233,6 +4338,7 @@ "version": "6.0.2", "resolved": "http://npm.117112.xyz/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, "dependencies": { "debug": "4" }, @@ -4244,6 +4350,7 @@ "version": "4.1.3", "resolved": "http://npm.117112.xyz/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, "engines": { "node": ">=6" } @@ -4252,6 +4359,7 @@ "version": "4.3.2", "resolved": "http://npm.117112.xyz/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -4304,12 +4412,14 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "http://npm.117112.xyz/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/archiver": { "version": "7.0.1", "resolved": "http://npm.117112.xyz/archiver/-/archiver-7.0.1.tgz", "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, "dependencies": { "archiver-utils": "^5.0.2", "async": "^3.2.4", @@ -4327,6 +4437,7 @@ "version": "5.0.2", "resolved": "http://npm.117112.xyz/archiver-utils/-/archiver-utils-5.0.2.tgz", "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, "dependencies": { "glob": "^10.0.0", "graceful-fs": "^4.2.0", @@ -4344,6 +4455,7 @@ "version": "2.0.1", "resolved": "http://npm.117112.xyz/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -4352,6 +4464,7 @@ "version": "10.4.5", "resolved": "http://npm.117112.xyz/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -4371,6 +4484,7 @@ "version": "2.0.1", "resolved": "http://npm.117112.xyz/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" }, @@ -4382,6 +4496,7 @@ "version": "9.0.5", "resolved": "http://npm.117112.xyz/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4396,6 +4511,7 @@ "version": "7.1.2", "resolved": "http://npm.117112.xyz/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -4404,6 +4520,7 @@ "version": "4.5.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -4419,6 +4536,7 @@ "version": "4.5.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -4435,6 +4553,7 @@ "resolved": "http://npm.117112.xyz/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "deprecated": "This package is no longer supported.", + "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4462,6 +4581,7 @@ "version": "0.12.2", "resolved": "http://npm.117112.xyz/ast-kit/-/ast-kit-0.12.2.tgz", "integrity": "sha512-es1zHFsnZ4Y4efz412nnrU3KvVAhgqy90a7Yt9Wpi5vQ3l4aYMOX0Qx4FD0elKr5ITEhiUGCSFcgGYf4YTuACg==", + "dev": true, "dependencies": { "@babel/parser": "^7.24.6", "pathe": "^1.1.2" @@ -4474,6 +4594,7 @@ "version": "0.6.1", "resolved": "http://npm.117112.xyz/ast-walker-scope/-/ast-walker-scope-0.6.1.tgz", "integrity": "sha512-0ZdQEsSfH3mX4BFbRCc3xOBjx5bDbm73+aAdQOHerPQNf8K0XFMAv79ucd2BpnSc4UMyvBDixiroT8yjm2Y6bw==", + "dev": true, "dependencies": { "@babel/parser": "^7.24.0", "ast-kit": "^0.12.1" @@ -4485,12 +4606,14 @@ "node_modules/async": { "version": "3.2.5", "resolved": "http://npm.117112.xyz/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true }, "node_modules/async-sema": { "version": "3.1.1", "resolved": "http://npm.117112.xyz/async-sema/-/async-sema-3.1.1.tgz", - "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==" + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -4540,6 +4663,7 @@ "version": "1.0.7", "resolved": "http://npm.117112.xyz/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -4553,7 +4677,8 @@ "node_modules/b4a": { "version": "1.6.6", "resolved": "http://npm.117112.xyz/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "devOptional": true }, "node_modules/bail": { "version": "2.0.2", @@ -4644,6 +4769,7 @@ "version": "1.5.0", "resolved": "http://npm.117112.xyz/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -4652,6 +4778,7 @@ "version": "0.2.17", "resolved": "http://npm.117112.xyz/birpc/-/birpc-0.2.17.tgz", "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } @@ -4714,6 +4841,7 @@ "version": "2.1.0", "resolved": "http://npm.117112.xyz/block-stream2/-/block-stream2-2.1.0.tgz", "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", + "dev": true, "dependencies": { "readable-stream": "^3.4.0" } @@ -4721,7 +4849,8 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "http://npm.117112.xyz/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "devOptional": true }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -4754,12 +4883,13 @@ "node_modules/browser-or-node": { "version": "2.1.1", "resolved": "http://npm.117112.xyz/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "dev": true }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "http://npm.117112.xyz/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.23.2", + "resolved": "http://npm.117112.xyz/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "funding": [ { "type": "opencollective", @@ -4775,10 +4905,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4791,6 +4921,7 @@ "version": "6.0.3", "resolved": "http://npm.117112.xyz/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "funding": [ { "type": "github", @@ -4814,6 +4945,7 @@ "version": "1.0.0", "resolved": "http://npm.117112.xyz/buffer-crc32/-/buffer-crc32-1.0.0.tgz", "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, "engines": { "node": ">=8.0.0" } @@ -4826,12 +4958,14 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "http://npm.117112.xyz/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "http://npm.117112.xyz/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, "engines": { "node": ">=6" }, @@ -4843,6 +4977,7 @@ "version": "4.1.0", "resolved": "http://npm.117112.xyz/bundle-name/-/bundle-name-4.1.0.tgz", "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, "dependencies": { "run-applescript": "^7.0.0" }, @@ -4884,6 +5019,7 @@ "version": "6.7.14", "resolved": "http://npm.117112.xyz/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, "engines": { "node": ">=8" } @@ -4904,6 +5040,7 @@ "version": "1.0.7", "resolved": "http://npm.117112.xyz/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4922,6 +5059,7 @@ "version": "6.3.0", "resolved": "http://npm.117112.xyz/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "engines": { "node": ">=10" }, @@ -4941,6 +5079,7 @@ "version": "3.0.0", "resolved": "http://npm.117112.xyz/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -4949,9 +5088,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "http://npm.117112.xyz/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "version": "1.0.30001641", + "resolved": "http://npm.117112.xyz/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", + "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", "funding": [ { "type": "opencollective", @@ -5066,6 +5205,7 @@ "version": "4.0.0", "resolved": "http://npm.117112.xyz/ci-info/-/ci-info-4.0.0.tgz", "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true, "funding": [ { "type": "github", @@ -5088,6 +5228,7 @@ "version": "0.1.0", "resolved": "http://npm.117112.xyz/clear/-/clear-0.1.0.tgz", "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", + "dev": true, "engines": { "node": "*" } @@ -5185,6 +5326,7 @@ "version": "1.1.2", "resolved": "http://npm.117112.xyz/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -5241,6 +5383,7 @@ "version": "1.1.3", "resolved": "http://npm.117112.xyz/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, "bin": { "color-support": "bin.js" } @@ -5248,7 +5391,8 @@ "node_modules/colord": { "version": "2.9.3", "resolved": "http://npm.117112.xyz/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -5263,6 +5407,7 @@ "version": "7.2.0", "resolved": "http://npm.117112.xyz/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "devOptional": true, "engines": { "node": ">= 10" } @@ -5270,7 +5415,8 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "http://npm.117112.xyz/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/compatx": { "version": "0.1.8", @@ -5281,6 +5427,7 @@ "version": "6.0.2", "resolved": "http://npm.117112.xyz/compress-commons/-/compress-commons-6.0.2.tgz", "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, "dependencies": { "crc-32": "^1.2.0", "crc32-stream": "^6.0.0", @@ -5296,6 +5443,7 @@ "version": "2.0.1", "resolved": "http://npm.117112.xyz/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" }, @@ -5307,6 +5455,7 @@ "version": "4.5.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -5339,7 +5488,8 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "http://npm.117112.xyz/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -5386,6 +5536,7 @@ "version": "3.0.5", "resolved": "http://npm.117112.xyz/copy-anything/-/copy-anything-3.0.5.tgz", "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, "dependencies": { "is-what": "^4.1.8" }, @@ -5399,12 +5550,14 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "http://npm.117112.xyz/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "http://npm.117112.xyz/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, "bin": { "crc32": "bin/crc32.njs" }, @@ -5416,6 +5569,7 @@ "version": "6.0.0", "resolved": "http://npm.117112.xyz/crc32-stream/-/crc32-stream-6.0.0.tgz", "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^4.0.0" @@ -5428,6 +5582,7 @@ "version": "4.5.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -5442,7 +5597,8 @@ "node_modules/create-require": { "version": "1.1.1", "resolved": "http://npm.117112.xyz/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true }, "node_modules/crelt": { "version": "1.0.6", @@ -5453,6 +5609,7 @@ "version": "8.1.0", "resolved": "http://npm.117112.xyz/croner/-/croner-8.1.0.tgz", "integrity": "sha512-sz990XOUPR8dG/r5BRKMBd15MYDDUu8oeSaxFD5DqvNgHSZw8Psd1s689/IGET7ezxRMiNlCIyGeY1Gvxp/MLg==", + "dev": true, "engines": { "node": ">=18.0" } @@ -5461,6 +5618,7 @@ "version": "2.50.0", "resolved": "http://npm.117112.xyz/cronstrue/-/cronstrue-2.50.0.tgz", "integrity": "sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==", + "dev": true, "bin": { "cronstrue": "bin/cli.js" } @@ -5503,6 +5661,7 @@ "version": "7.2.0", "resolved": "http://npm.117112.xyz/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -5514,6 +5673,7 @@ "version": "5.1.0", "resolved": "http://npm.117112.xyz/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "devOptional": true, "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5541,6 +5701,7 @@ "version": "6.1.0", "resolved": "http://npm.117112.xyz/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "devOptional": true, "engines": { "node": ">= 6" }, @@ -5569,6 +5730,7 @@ "version": "7.0.4", "resolved": "http://npm.117112.xyz/cssnano/-/cssnano-7.0.4.tgz", "integrity": "sha512-rQgpZra72iFjiheNreXn77q1haS2GEy69zCMbu4cpXCFPMQF+D4Ik5V7ktMzUF/sA7xCIgcqHwGPnCD+0a1vHg==", + "dev": true, "dependencies": { "cssnano-preset-default": "^7.0.4", "lilconfig": "^3.1.2" @@ -5588,6 +5750,7 @@ "version": "7.0.4", "resolved": "http://npm.117112.xyz/cssnano-preset-default/-/cssnano-preset-default-7.0.4.tgz", "integrity": "sha512-jQ6zY9GAomQX7/YNLibMEsRZguqMUGuupXcEk2zZ+p3GUxwCAsobqPYE62VrJ9qZ0l9ltrv2rgjwZPBIFIjYtw==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "css-declaration-sorter": "^7.2.0", @@ -5631,6 +5794,7 @@ "version": "5.0.0", "resolved": "http://npm.117112.xyz/cssnano-utils/-/cssnano-utils-5.0.0.tgz", "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", + "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -5642,6 +5806,7 @@ "version": "5.0.5", "resolved": "http://npm.117112.xyz/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "devOptional": true, "dependencies": { "css-tree": "~2.2.0" }, @@ -5654,6 +5819,7 @@ "version": "2.2.1", "resolved": "http://npm.117112.xyz/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "devOptional": true, "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" @@ -5666,7 +5832,8 @@ "node_modules/csso/node_modules/mdn-data": { "version": "2.0.28", "resolved": "http://npm.117112.xyz/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "devOptional": true }, "node_modules/csstype": { "version": "3.1.3", @@ -5677,6 +5844,7 @@ "version": "0.1.4", "resolved": "http://npm.117112.xyz/db0/-/db0-0.1.4.tgz", "integrity": "sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==", + "dev": true, "peerDependencies": { "@libsql/client": "^0.5.2", "better-sqlite3": "^9.4.3", @@ -5726,6 +5894,7 @@ "version": "0.2.2", "resolved": "http://npm.117112.xyz/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, "engines": { "node": ">=0.10" } @@ -5763,6 +5932,7 @@ "version": "4.3.1", "resolved": "http://npm.117112.xyz/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5771,6 +5941,7 @@ "version": "5.2.1", "resolved": "http://npm.117112.xyz/default-browser/-/default-browser-5.2.1.tgz", "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -5786,6 +5957,7 @@ "version": "5.0.0", "resolved": "http://npm.117112.xyz/default-browser-id/-/default-browser-id-5.0.0.tgz", "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, "engines": { "node": ">=18" }, @@ -5797,6 +5969,7 @@ "version": "1.1.4", "resolved": "http://npm.117112.xyz/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5813,6 +5986,7 @@ "version": "2.0.0", "resolved": "http://npm.117112.xyz/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, "engines": { "node": ">=8" } @@ -5831,6 +6005,7 @@ "version": "2.1.0", "resolved": "http://npm.117112.xyz/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "devOptional": true, "engines": { "node": ">=0.10" } @@ -5888,7 +6063,8 @@ "node_modules/devalue": { "version": "5.0.0", "resolved": "http://npm.117112.xyz/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==" + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", + "dev": true }, "node_modules/devlop": { "version": "1.1.0", @@ -5925,6 +6101,7 @@ "version": "5.2.0", "resolved": "http://npm.117112.xyz/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, "engines": { "node": ">=0.3.1" } @@ -5938,6 +6115,7 @@ "version": "2.0.0", "resolved": "http://npm.117112.xyz/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "devOptional": true, "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -5951,6 +6129,7 @@ "version": "2.3.0", "resolved": "http://npm.117112.xyz/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "devOptional": true, "funding": [ { "type": "github", @@ -5962,6 +6141,7 @@ "version": "5.0.3", "resolved": "http://npm.117112.xyz/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "devOptional": true, "dependencies": { "domelementtype": "^2.3.0" }, @@ -5976,6 +6156,7 @@ "version": "3.1.0", "resolved": "http://npm.117112.xyz/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "devOptional": true, "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -5989,6 +6170,7 @@ "version": "8.0.2", "resolved": "http://npm.117112.xyz/dot-prop/-/dot-prop-8.0.2.tgz", "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", + "dev": true, "dependencies": { "type-fest": "^3.8.0" }, @@ -6003,6 +6185,7 @@ "version": "3.13.1", "resolved": "http://npm.117112.xyz/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, "engines": { "node": ">=14.16" }, @@ -6024,7 +6207,8 @@ "node_modules/duplexer": { "version": "0.1.2", "resolved": "http://npm.117112.xyz/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "node_modules/eastasianwidth": { "version": "0.2.0", @@ -6045,9 +6229,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.820", - "resolved": "http://npm.117112.xyz/electron-to-chromium/-/electron-to-chromium-1.4.820.tgz", - "integrity": "sha512-kK/4O/YunacfboFEk/BDf7VO1HoPmDudLTJAU9NmXIOSjsV7qVIX3OrI4REZo0VmdqhcpUcncQc6N8Q3aEXlHg==" + "version": "1.4.827", + "resolved": "http://npm.117112.xyz/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz", + "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -6089,6 +6273,7 @@ "version": "5.17.0", "resolved": "http://npm.117112.xyz/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6112,6 +6297,7 @@ "version": "0.1.4", "resolved": "http://npm.117112.xyz/error-stack-parser-es/-/error-stack-parser-es-0.1.4.tgz", "integrity": "sha512-l0uy0kAoo6toCgVOYaAayqtPa2a1L15efxUMEnQebKwLQX2X0OpS6wMMQdc4juJXmxd9i40DuaUHq+mjIya9TQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } @@ -6120,6 +6306,7 @@ "version": "1.0.0", "resolved": "http://npm.117112.xyz/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -6131,6 +6318,7 @@ "version": "1.3.0", "resolved": "http://npm.117112.xyz/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -6205,6 +6393,7 @@ "version": "1.8.1", "resolved": "http://npm.117112.xyz/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "devOptional": true, "engines": { "node": ">= 0.6" } @@ -6213,6 +6402,7 @@ "version": "5.0.1", "resolved": "http://npm.117112.xyz/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, "engines": { "node": ">=6" } @@ -6220,12 +6410,14 @@ "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "http://npm.117112.xyz/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true }, "node_modules/events": { "version": "3.3.0", "resolved": "http://npm.117112.xyz/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "engines": { "node": ">=0.8.x" } @@ -6270,6 +6462,7 @@ "version": "1.0.2", "resolved": "http://npm.117112.xyz/externality/-/externality-1.0.2.tgz", "integrity": "sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==", + "dev": true, "dependencies": { "enhanced-resolve": "^5.14.1", "mlly": "^1.3.0", @@ -6285,7 +6478,8 @@ "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "http://npm.117112.xyz/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "devOptional": true }, "node_modules/fast-glob": { "version": "3.3.2", @@ -6306,6 +6500,7 @@ "version": "0.1.1", "resolved": "http://npm.117112.xyz/fast-npm-meta/-/fast-npm-meta-0.1.1.tgz", "integrity": "sha512-uS9DjGncI/9XZ6HJFrci0WzSi++N8Jskbb2uB7+9SQlrgA3VaLhXhV9Gl5HwIGESHkayYYZFGnVNhJwRDKCWIA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } @@ -6314,6 +6509,7 @@ "version": "4.4.0", "resolved": "http://npm.117112.xyz/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "dev": true, "funding": [ { "type": "github", @@ -6342,7 +6538,8 @@ "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "http://npm.117112.xyz/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true }, "node_modules/fill-range": { "version": "7.1.1", @@ -6359,6 +6556,7 @@ "version": "1.1.0", "resolved": "http://npm.117112.xyz/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6392,7 +6590,8 @@ "node_modules/flatted": { "version": "3.3.1", "resolved": "http://npm.117112.xyz/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true }, "node_modules/fontaine": { "version": "0.5.0", @@ -6428,6 +6627,7 @@ "version": "0.3.3", "resolved": "http://npm.117112.xyz/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -6577,6 +6777,7 @@ "resolved": "http://npm.117112.xyz/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "deprecated": "This package is no longer supported.", + "dev": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -6612,6 +6813,7 @@ "version": "1.2.4", "resolved": "http://npm.117112.xyz/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -6731,6 +6933,7 @@ "version": "4.0.1", "resolved": "http://npm.117112.xyz/global-directory/-/global-directory-4.0.1.tgz", "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, "dependencies": { "ini": "4.1.1" }, @@ -6772,6 +6975,7 @@ "version": "1.0.1", "resolved": "http://npm.117112.xyz/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6788,6 +6992,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/gzip-size/-/gzip-size-7.0.0.tgz", "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "dev": true, "dependencies": { "duplexer": "^0.1.2" }, @@ -6827,6 +7032,7 @@ "version": "1.0.2", "resolved": "http://npm.117112.xyz/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -6838,6 +7044,7 @@ "version": "1.0.3", "resolved": "http://npm.117112.xyz/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -6873,7 +7080,8 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "http://npm.117112.xyz/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hash-sum": { "version": "2.0.0", @@ -7041,6 +7249,7 @@ "version": "3.3.1", "resolved": "http://npm.117112.xyz/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, "engines": { "node": ">=8" }, @@ -7128,6 +7337,7 @@ "version": "5.0.1", "resolved": "http://npm.117112.xyz/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -7139,7 +7349,8 @@ "node_modules/httpxy": { "version": "0.1.5", "resolved": "http://npm.117112.xyz/httpxy/-/httpxy-0.1.5.tgz", - "integrity": "sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==" + "integrity": "sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==", + "dev": true }, "node_modules/human-signals": { "version": "4.3.1", @@ -7153,6 +7364,7 @@ "version": "1.2.1", "resolved": "http://npm.117112.xyz/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "devOptional": true, "funding": [ { "type": "github", @@ -7200,6 +7412,7 @@ "version": "4.1.1", "resolved": "http://npm.117112.xyz/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7208,6 +7421,7 @@ "version": "5.4.1", "resolved": "http://npm.117112.xyz/ioredis/-/ioredis-5.4.1.tgz", "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "devOptional": true, "dependencies": { "@ioredis/commands": "^1.1.1", "cluster-key-slot": "^1.1.0", @@ -7231,6 +7445,7 @@ "version": "2.2.0", "resolved": "http://npm.117112.xyz/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, "engines": { "node": ">= 10" } @@ -7307,6 +7522,7 @@ "version": "1.1.1", "resolved": "http://npm.117112.xyz/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" @@ -7339,6 +7555,7 @@ "version": "3.2.1", "resolved": "http://npm.117112.xyz/is-builtin-module/-/is-builtin-module-3.2.1.tgz", "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, "dependencies": { "builtin-modules": "^3.3.0" }, @@ -7353,6 +7570,7 @@ "version": "1.2.7", "resolved": "http://npm.117112.xyz/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7468,6 +7686,7 @@ "version": "1.0.0", "resolved": "http://npm.117112.xyz/is-installed-globally/-/is-installed-globally-1.0.0.tgz", "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "dev": true, "dependencies": { "global-directory": "^4.0.1", "is-path-inside": "^4.0.0" @@ -7482,7 +7701,8 @@ "node_modules/is-module": { "version": "1.0.0", "resolved": "http://npm.117112.xyz/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true }, "node_modules/is-number": { "version": "7.0.0", @@ -7496,6 +7716,7 @@ "version": "4.0.0", "resolved": "http://npm.117112.xyz/is-path-inside/-/is-path-inside-4.0.0.tgz", "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, "engines": { "node": ">=12" }, @@ -7518,6 +7739,7 @@ "version": "1.2.1", "resolved": "http://npm.117112.xyz/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, "dependencies": { "@types/estree": "*" } @@ -7545,6 +7767,7 @@ "version": "1.1.13", "resolved": "http://npm.117112.xyz/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -7559,6 +7782,7 @@ "version": "4.1.16", "resolved": "http://npm.117112.xyz/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, "engines": { "node": ">=12.13" }, @@ -7597,7 +7821,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "http://npm.117112.xyz/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -7605,15 +7830,12 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/jackspeak": { - "version": "3.4.2", - "resolved": "http://npm.117112.xyz/jackspeak/-/jackspeak-3.4.2.tgz", - "integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==", + "version": "3.4.3", + "resolved": "http://npm.117112.xyz/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "14 >=14.21 || 16 >=16.20 || >=18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -7733,6 +7955,7 @@ "version": "3.0.3", "resolved": "http://npm.117112.xyz/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, "engines": { "node": ">=6" } @@ -7904,6 +8127,7 @@ "version": "2.8.0", "resolved": "http://npm.117112.xyz/launch-editor/-/launch-editor-2.8.0.tgz", "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "dev": true, "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -7913,6 +8137,7 @@ "version": "1.0.1", "resolved": "http://npm.117112.xyz/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, "dependencies": { "readable-stream": "^2.0.5" }, @@ -7924,6 +8149,7 @@ "version": "2.3.8", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7937,12 +8163,14 @@ "node_modules/lazystream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "http://npm.117112.xyz/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "http://npm.117112.xyz/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -8056,7 +8284,8 @@ "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "http://npm.117112.xyz/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "devOptional": true }, "node_modules/lodash.includes": { "version": "4.3.0", @@ -8066,7 +8295,8 @@ "node_modules/lodash.isarguments": { "version": "3.1.0", "resolved": "http://npm.117112.xyz/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "devOptional": true }, "node_modules/lodash.isboolean": { "version": "3.0.3", @@ -8096,7 +8326,8 @@ "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "http://npm.117112.xyz/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -8111,7 +8342,8 @@ "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "http://npm.117112.xyz/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true }, "node_modules/longest-streak": { "version": "3.1.0", @@ -8178,6 +8410,7 @@ "version": "0.6.2", "resolved": "http://npm.117112.xyz/magic-string-ast/-/magic-string-ast-0.6.2.tgz", "integrity": "sha512-oN3Bcd7ZVt+0VGEs7402qR/tjgjbM7kPlH/z7ufJnzTLVBzXJITRHOJiwMmmYMgZfdoWQsfQcY+iKlxiBppnMA==", + "dev": true, "dependencies": { "magic-string": "^0.30.10" }, @@ -8189,6 +8422,7 @@ "version": "0.3.4", "resolved": "http://npm.117112.xyz/magicast/-/magicast-0.3.4.tgz", "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "devOptional": true, "dependencies": { "@babel/parser": "^7.24.4", "@babel/types": "^7.24.0", @@ -8199,6 +8433,7 @@ "version": "3.1.0", "resolved": "http://npm.117112.xyz/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { "semver": "^6.0.0" }, @@ -8213,6 +8448,7 @@ "version": "6.3.1", "resolved": "http://npm.117112.xyz/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -9109,6 +9345,7 @@ "version": "8.0.1", "resolved": "http://npm.117112.xyz/minio/-/minio-8.0.1.tgz", "integrity": "sha512-FzDO6yGnqLtm8sp3mXafWtiRUOslJSSg/aI0v9YbN5vjw5KLoODKAROCyi766NIvTSxcfHBrbhCSGk1A+MOzDg==", + "dev": true, "dependencies": { "async": "^3.2.4", "block-stream2": "^2.1.0", @@ -9168,7 +9405,8 @@ "node_modules/mitt": { "version": "3.0.1", "resolved": "http://npm.117112.xyz/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true }, "node_modules/mkdirp": { "version": "0.5.6", @@ -9233,6 +9471,7 @@ "version": "5.0.7", "resolved": "http://npm.117112.xyz/nanoid/-/nanoid-5.0.7.tgz", "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "dev": true, "funding": [ { "type": "github", @@ -9330,6 +9569,7 @@ "version": "4.8.1", "resolved": "http://npm.117112.xyz/node-gyp-build/-/node-gyp-build-4.8.1.tgz", "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -9345,6 +9585,7 @@ "version": "5.0.0", "resolved": "http://npm.117112.xyz/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, "dependencies": { "abbrev": "1" }, @@ -9401,6 +9642,7 @@ "resolved": "http://npm.117112.xyz/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "deprecated": "This package is no longer supported.", + "dev": true, "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -9412,6 +9654,7 @@ "version": "2.1.1", "resolved": "http://npm.117112.xyz/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "devOptional": true, "dependencies": { "boolbase": "^1.0.0" }, @@ -9423,6 +9666,7 @@ "version": "3.12.0", "resolved": "http://npm.117112.xyz/nuxi/-/nuxi-3.12.0.tgz", "integrity": "sha512-6vRdiXTw9SajEQOUi6Ze/XaIXzy1q/sD5UqHQSv3yqTu7Pot5S7fEihNXV8LpcgLz+9HzjVt70r7jYe7R99c2w==", + "dev": true, "bin": { "nuxi": "bin/nuxi.mjs", "nuxi-ng": "bin/nuxi.mjs", @@ -9440,6 +9684,7 @@ "version": "3.12.3", "resolved": "http://npm.117112.xyz/nuxt/-/nuxt-3.12.3.tgz", "integrity": "sha512-Qdkc+ucWwFcKsiL/OTF87jbgyFSymwPRKiiu0mvzsd/RXTn4hGiBduAlF3f7Yy0F9pDjSj8XHKDSnHYsDzm6rA==", + "dev": true, "dependencies": { "@nuxt/devalue": "^2.0.2", "@nuxt/devtools": "^1.3.7", @@ -9562,6 +9807,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "aix" @@ -9577,6 +9823,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -9592,6 +9839,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -9607,6 +9855,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -9622,6 +9871,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -9637,6 +9887,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -9652,6 +9903,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -9667,6 +9919,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -9682,6 +9935,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9697,6 +9951,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9712,6 +9967,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9727,6 +9983,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9742,6 +9999,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9757,6 +10015,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9772,6 +10031,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9787,6 +10047,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9802,6 +10063,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -9817,6 +10079,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -9832,6 +10095,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -9847,6 +10111,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -9862,6 +10127,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -9877,6 +10143,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -9892,6 +10159,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -9904,6 +10172,7 @@ "version": "8.12.0", "resolved": "http://npm.117112.xyz/acorn/-/acorn-8.12.0.tgz", "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -9915,6 +10184,7 @@ "version": "0.23.0", "resolved": "http://npm.117112.xyz/esbuild/-/esbuild-0.23.0.tgz", "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -9953,6 +10223,7 @@ "version": "3.0.3", "resolved": "http://npm.117112.xyz/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "dependencies": { "@types/estree": "^1.0.0" } @@ -9961,6 +10232,7 @@ "version": "11.2.0", "resolved": "http://npm.117112.xyz/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -9974,6 +10246,7 @@ "version": "4.0.4", "resolved": "http://npm.117112.xyz/mime/-/mime-4.0.4.tgz", "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa" ], @@ -9988,6 +10261,7 @@ "version": "2.9.7", "resolved": "http://npm.117112.xyz/nitropack/-/nitropack-2.9.7.tgz", "integrity": "sha512-aKXvtNrWkOCMsQbsk4A0qQdBjrJ1ZcvwlTQevI/LAgLWLYc5L7Q/YiYxGLal4ITyNSlzir1Cm1D2ZxnYhmpMEw==", + "dev": true, "dependencies": { "@cloudflare/kv-asset-handler": "^0.3.4", "@netlify/functions": "^2.8.0", @@ -10079,6 +10353,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "aix" @@ -10094,6 +10369,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "android" @@ -10109,6 +10385,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "android" @@ -10124,6 +10401,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "android" @@ -10139,6 +10417,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -10154,6 +10433,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -10169,6 +10449,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -10184,6 +10465,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "freebsd" @@ -10199,6 +10481,7 @@ "cpu": [ "arm" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10214,6 +10497,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10229,6 +10513,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10244,6 +10529,7 @@ "cpu": [ "loong64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10259,6 +10545,7 @@ "cpu": [ "mips64el" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10274,6 +10561,7 @@ "cpu": [ "ppc64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10289,6 +10577,7 @@ "cpu": [ "riscv64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10304,6 +10593,7 @@ "cpu": [ "s390x" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10319,6 +10609,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -10334,6 +10625,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "netbsd" @@ -10349,6 +10641,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "openbsd" @@ -10364,6 +10657,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "sunos" @@ -10379,6 +10673,7 @@ "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -10394,6 +10689,7 @@ "cpu": [ "ia32" ], + "dev": true, "optional": true, "os": [ "win32" @@ -10409,6 +10705,7 @@ "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -10421,6 +10718,7 @@ "version": "0.20.2", "resolved": "http://npm.117112.xyz/esbuild/-/esbuild-0.20.2.tgz", "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -10458,6 +10756,7 @@ "version": "0.6.2", "resolved": "http://npm.117112.xyz/xml2js/-/xml2js-0.6.2.tgz", "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, "optional": true, "peer": true, "dependencies": { @@ -10612,6 +10911,7 @@ "version": "8.4.2", "resolved": "http://npm.117112.xyz/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -10628,6 +10928,7 @@ "version": "2.2.1", "resolved": "http://npm.117112.xyz/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "bin": { "is-docker": "cli.js" }, @@ -10642,6 +10943,7 @@ "version": "2.2.0", "resolved": "http://npm.117112.xyz/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -10653,6 +10955,7 @@ "version": "6.7.6", "resolved": "http://npm.117112.xyz/openapi-typescript/-/openapi-typescript-6.7.6.tgz", "integrity": "sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==", + "dev": true, "dependencies": { "ansi-colors": "^4.1.3", "fast-glob": "^3.3.2", @@ -10669,6 +10972,7 @@ "version": "9.4.0", "resolved": "http://npm.117112.xyz/supports-color/-/supports-color-9.4.0.tgz", "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, "engines": { "node": ">=12" }, @@ -10840,12 +11144,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.0", - "resolved": "http://npm.117112.xyz/lru-cache/-/lru-cache-10.4.0.tgz", - "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", - "engines": { - "node": ">=18" - } + "version": "10.4.3", + "resolved": "http://npm.117112.xyz/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { "version": "6.2.2", @@ -10998,6 +11299,7 @@ "version": "1.0.0", "resolved": "http://npm.117112.xyz/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -11033,6 +11335,7 @@ "version": "10.0.0", "resolved": "http://npm.117112.xyz/postcss-calc/-/postcss-calc-10.0.0.tgz", "integrity": "sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.16", "postcss-value-parser": "^4.2.0" @@ -11045,9 +11348,10 @@ } }, "node_modules/postcss-calc/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11060,6 +11364,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-colormin/-/postcss-colormin-7.0.1.tgz", "integrity": "sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "caniuse-api": "^3.0.0", @@ -11077,6 +11382,7 @@ "version": "7.0.2", "resolved": "http://npm.117112.xyz/postcss-convert-values/-/postcss-convert-values-7.0.2.tgz", "integrity": "sha512-MuZIF6HJ4izko07Q0TgW6pClalI4al6wHRNPkFzqQdwAwG7hPn0lA58VZdxyb2Vl5AYjJ1piO+jgF9EnTjQwQQ==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "postcss-value-parser": "^4.2.0" @@ -11092,6 +11398,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-discard-comments/-/postcss-discard-comments-7.0.1.tgz", "integrity": "sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.1.0" }, @@ -11103,9 +11410,10 @@ } }, "node_modules/postcss-discard-comments/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11118,6 +11426,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.0.tgz", "integrity": "sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==", + "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -11129,6 +11438,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", + "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -11140,6 +11450,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", + "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -11219,6 +11530,7 @@ "version": "7.0.2", "resolved": "http://npm.117112.xyz/postcss-merge-longhand/-/postcss-merge-longhand-7.0.2.tgz", "integrity": "sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^7.0.2" @@ -11234,6 +11546,7 @@ "version": "7.0.2", "resolved": "http://npm.117112.xyz/postcss-merge-rules/-/postcss-merge-rules-7.0.2.tgz", "integrity": "sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "caniuse-api": "^3.0.0", @@ -11248,9 +11561,10 @@ } }, "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11263,6 +11577,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11277,6 +11592,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", + "dev": true, "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^5.0.0", @@ -11293,6 +11609,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-minify-params/-/postcss-minify-params-7.0.1.tgz", "integrity": "sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "cssnano-utils": "^5.0.0", @@ -11309,6 +11626,7 @@ "version": "7.0.2", "resolved": "http://npm.117112.xyz/postcss-minify-selectors/-/postcss-minify-selectors-7.0.2.tgz", "integrity": "sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "postcss-selector-parser": "^6.1.0" @@ -11321,9 +11639,10 @@ } }, "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11351,9 +11670,9 @@ } }, "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11431,9 +11750,9 @@ } }, "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11446,6 +11765,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", + "dev": true, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -11457,6 +11777,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11471,6 +11792,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11485,6 +11807,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11499,6 +11822,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11513,6 +11837,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11527,6 +11852,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.1.tgz", "integrity": "sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "postcss-value-parser": "^4.2.0" @@ -11542,6 +11868,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11556,6 +11883,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11570,6 +11898,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", + "dev": true, "dependencies": { "cssnano-utils": "^5.0.0", "postcss-value-parser": "^4.2.0" @@ -11585,6 +11914,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-reduce-initial/-/postcss-reduce-initial-7.0.1.tgz", "integrity": "sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "caniuse-api": "^3.0.0" @@ -11600,6 +11930,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -11626,6 +11957,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-svgo/-/postcss-svgo-7.0.1.tgz", "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^3.3.2" @@ -11641,6 +11973,7 @@ "version": "7.0.1", "resolved": "http://npm.117112.xyz/postcss-unique-selectors/-/postcss-unique-selectors-7.0.1.tgz", "integrity": "sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.1.0" }, @@ -11652,9 +11985,10 @@ } }, "node_modules/postcss-unique-selectors/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11758,6 +12092,7 @@ "version": "6.1.1", "resolved": "http://npm.117112.xyz/pretty-bytes/-/pretty-bytes-6.1.1.tgz", "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, "engines": { "node": "^14.13.1 || >=16.0.0" }, @@ -11769,6 +12104,7 @@ "version": "0.11.10", "resolved": "http://npm.117112.xyz/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, "engines": { "node": ">= 0.6.0" } @@ -11776,12 +12112,14 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "http://npm.117112.xyz/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/prompts": { "version": "2.4.2", "resolved": "http://npm.117112.xyz/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -11847,9 +12185,9 @@ } }, "node_modules/prosemirror-history": { - "version": "1.4.0", - "resolved": "http://npm.117112.xyz/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", + "version": "1.4.1", + "resolved": "http://npm.117112.xyz/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", @@ -12013,6 +12351,7 @@ "version": "7.1.3", "resolved": "http://npm.117112.xyz/query-string/-/query-string-7.1.3.tgz", "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dev": true, "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", @@ -12048,7 +12387,8 @@ "node_modules/queue-tick": { "version": "1.0.1", "resolved": "http://npm.117112.xyz/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "devOptional": true }, "node_modules/radix3": { "version": "1.1.2", @@ -12059,6 +12399,7 @@ "version": "2.1.0", "resolved": "http://npm.117112.xyz/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -12067,6 +12408,7 @@ "version": "1.2.1", "resolved": "http://npm.117112.xyz/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -12113,6 +12455,7 @@ "version": "3.6.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "devOptional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12126,6 +12469,7 @@ "version": "1.1.3", "resolved": "http://npm.117112.xyz/readdir-glob/-/readdir-glob-1.1.3.tgz", "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, "dependencies": { "minimatch": "^5.1.0" } @@ -12134,6 +12478,7 @@ "version": "2.0.1", "resolved": "http://npm.117112.xyz/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -12142,6 +12487,7 @@ "version": "5.1.6", "resolved": "http://npm.117112.xyz/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12164,6 +12510,7 @@ "version": "1.2.0", "resolved": "http://npm.117112.xyz/redis-errors/-/redis-errors-1.2.0.tgz", "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "devOptional": true, "engines": { "node": ">=4" } @@ -12172,6 +12519,7 @@ "version": "3.0.0", "resolved": "http://npm.117112.xyz/redis-parser/-/redis-parser-3.0.0.tgz", "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "devOptional": true, "dependencies": { "redis-errors": "^1.0.0" }, @@ -12441,6 +12789,7 @@ "version": "5.0.0", "resolved": "http://npm.117112.xyz/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "engines": { "node": ">=8" } @@ -12514,13 +12863,15 @@ "node_modules/rfdc": { "version": "1.4.1", "resolved": "http://npm.117112.xyz/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "http://npm.117112.xyz/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -12569,6 +12920,7 @@ "version": "5.12.0", "resolved": "http://npm.117112.xyz/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", + "dev": true, "dependencies": { "open": "^8.4.0", "picomatch": "^2.3.1", @@ -12599,6 +12951,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/run-applescript/-/run-applescript-7.0.0.tgz", "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, "engines": { "node": ">=18" }, @@ -12650,7 +13003,8 @@ "node_modules/sax": { "version": "1.4.1", "resolved": "http://npm.117112.xyz/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true }, "node_modules/scule": { "version": "1.3.0", @@ -12672,6 +13026,7 @@ "version": "0.18.0", "resolved": "http://npm.117112.xyz/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -12695,6 +13050,7 @@ "version": "2.6.9", "resolved": "http://npm.117112.xyz/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { "ms": "2.0.0" } @@ -12702,12 +13058,14 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "http://npm.117112.xyz/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "http://npm.117112.xyz/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, "bin": { "mime": "cli.js" }, @@ -12718,12 +13076,14 @@ "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "http://npm.117112.xyz/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "http://npm.117112.xyz/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -12732,6 +13092,7 @@ "version": "2.0.2", "resolved": "http://npm.117112.xyz/serve-placeholder/-/serve-placeholder-2.0.2.tgz", "integrity": "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==", + "dev": true, "dependencies": { "defu": "^6.1.4" } @@ -12740,6 +13101,7 @@ "version": "1.15.0", "resolved": "http://npm.117112.xyz/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -12753,12 +13115,14 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "http://npm.117112.xyz/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "http://npm.117112.xyz/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -12837,6 +13201,7 @@ "version": "1.8.1", "resolved": "http://npm.117112.xyz/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12904,6 +13269,7 @@ "version": "3.25.0", "resolved": "http://npm.117112.xyz/simple-git/-/simple-git-3.25.0.tgz", "integrity": "sha512-KIY5sBnzc4yEcJXW7Tdv4viEz8KyG+nU0hay+DWZasvdFOYKeUZ6Xc25LUHHjw0tinPT7O1eY6pzX7pRT1K8rw==", + "dev": true, "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -12939,7 +13305,8 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "http://npm.117112.xyz/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/skin-tone": { "version": "2.0.0", @@ -12966,7 +13333,8 @@ "node_modules/smob": { "version": "1.5.0", "resolved": "http://npm.117112.xyz/smob/-/smob-1.5.0.tgz", - "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==" + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true }, "node_modules/smooth-dnd": { "version": "0.12.1", @@ -12977,6 +13345,7 @@ "version": "0.7.4", "resolved": "http://npm.117112.xyz/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, "engines": { "node": ">= 8" } @@ -12993,6 +13362,7 @@ "version": "0.5.21", "resolved": "http://npm.117112.xyz/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13002,6 +13372,7 @@ "version": "0.6.1", "resolved": "http://npm.117112.xyz/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -13019,6 +13390,7 @@ "version": "14.0.1", "resolved": "http://npm.117112.xyz/speakingurl/-/speakingurl-14.0.1.tgz", "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -13027,6 +13399,7 @@ "version": "1.1.0", "resolved": "http://npm.117112.xyz/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true, "engines": { "node": ">=6" } @@ -13034,7 +13407,8 @@ "node_modules/standard-as-callback": { "version": "2.1.0", "resolved": "http://npm.117112.xyz/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "devOptional": true }, "node_modules/statuses": { "version": "2.0.1", @@ -13052,12 +13426,14 @@ "node_modules/stream-chain": { "version": "2.2.5", "resolved": "http://npm.117112.xyz/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==" + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true }, "node_modules/stream-json": { "version": "1.8.0", "resolved": "http://npm.117112.xyz/stream-json/-/stream-json-1.8.0.tgz", "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "dev": true, "dependencies": { "stream-chain": "^2.2.5" } @@ -13066,6 +13442,7 @@ "version": "2.18.0", "resolved": "http://npm.117112.xyz/streamx/-/streamx-2.18.0.tgz", "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "devOptional": true, "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -13079,6 +13456,7 @@ "version": "2.0.0", "resolved": "http://npm.117112.xyz/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true, "engines": { "node": ">=4" } @@ -13087,6 +13465,7 @@ "version": "1.3.0", "resolved": "http://npm.117112.xyz/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "devOptional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -13193,12 +13572,14 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "http://npm.117112.xyz/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true }, "node_modules/stylehacks": { "version": "7.0.2", "resolved": "http://npm.117112.xyz/stylehacks/-/stylehacks-7.0.2.tgz", "integrity": "sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==", + "dev": true, "dependencies": { "browserslist": "^4.23.1", "postcss-selector-parser": "^6.1.0" @@ -13211,9 +13592,10 @@ } }, "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -13304,6 +13686,7 @@ "version": "2.2.1", "resolved": "http://npm.117112.xyz/superjson/-/superjson-2.2.1.tgz", "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", + "dev": true, "dependencies": { "copy-anything": "^3.0.2" }, @@ -13336,12 +13719,14 @@ "node_modules/svg-tags": { "version": "1.0.0", "resolved": "http://npm.117112.xyz/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true }, "node_modules/svgo": { "version": "3.3.2", "resolved": "http://npm.117112.xyz/svgo/-/svgo-3.3.2.tgz", "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "devOptional": true, "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -13511,9 +13896,9 @@ } }, "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "http://npm.117112.xyz/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -13526,6 +13911,7 @@ "version": "2.2.1", "resolved": "http://npm.117112.xyz/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "engines": { "node": ">=6" } @@ -13564,6 +13950,7 @@ "version": "3.1.7", "resolved": "http://npm.117112.xyz/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "devOptional": true, "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -13587,9 +13974,10 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/terser": { - "version": "5.31.1", - "resolved": "http://npm.117112.xyz/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "version": "5.31.2", + "resolved": "http://npm.117112.xyz/terser/-/terser-5.31.2.tgz", + "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", + "devOptional": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -13606,12 +13994,14 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "http://npm.117112.xyz/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true }, "node_modules/text-decoder": { "version": "1.1.1", "resolved": "http://npm.117112.xyz/text-decoder/-/text-decoder-1.1.1.tgz", "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "devOptional": true, "dependencies": { "b4a": "^1.6.4" } @@ -13639,6 +14029,7 @@ "version": "4.0.2", "resolved": "http://npm.117112.xyz/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, "dependencies": { "readable-stream": "3" } @@ -13651,7 +14042,8 @@ "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "http://npm.117112.xyz/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true }, "node_modules/tippy.js": { "version": "6.3.7", @@ -13753,6 +14145,7 @@ "version": "0.21.3", "resolved": "http://npm.117112.xyz/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { "node": ">=10" }, @@ -13790,7 +14183,8 @@ "node_modules/ultrahtml": { "version": "1.5.3", "resolved": "http://npm.117112.xyz/ultrahtml/-/ultrahtml-1.5.3.tgz", - "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==" + "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==", + "dev": true }, "node_modules/uncrypto": { "version": "0.1.3", @@ -13820,6 +14214,7 @@ "version": "5.28.4", "resolved": "http://npm.117112.xyz/undici/-/undici-5.28.4.tgz", "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -13848,6 +14243,7 @@ "version": "1.9.15", "resolved": "http://npm.117112.xyz/unhead/-/unhead-1.9.15.tgz", "integrity": "sha512-/99Wft1CT0fxsWzmBeOwuH/k4HdMeyfDGyB4wFNVZVNTffRHDOqaqQ6RS+LHPsIiCKmm9FP7Vq7Rz09Zs/fQJQ==", + "dev": true, "dependencies": { "@unhead/dom": "1.9.15", "@unhead/schema": "1.9.15", @@ -14042,6 +14438,7 @@ "version": "0.10.0", "resolved": "http://npm.117112.xyz/unplugin-vue-router/-/unplugin-vue-router-0.10.0.tgz", "integrity": "sha512-t9cwRvNONcrh7CZLUYrd4kGOH4xZRhsHeT+exaAuYFn7z87pkTHiHh3wBnGerfKGs22SnmJIIjcKyEa62CO+4w==", + "dev": true, "dependencies": { "@babel/types": "^7.24.7", "@rollup/pluginutils": "^5.1.0", @@ -14140,12 +14537,9 @@ } }, "node_modules/unstorage/node_modules/lru-cache": { - "version": "10.4.0", - "resolved": "http://npm.117112.xyz/lru-cache/-/lru-cache-10.4.0.tgz", - "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", - "engines": { - "node": ">=18" - } + "version": "10.4.3", + "resolved": "http://npm.117112.xyz/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/untun": { "version": "0.1.3", @@ -14227,12 +14621,14 @@ "node_modules/urlpattern-polyfill": { "version": "8.0.2", "resolved": "http://npm.117112.xyz/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", - "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==" + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", + "dev": true }, "node_modules/util": { "version": "0.12.5", "resolved": "http://npm.117112.xyz/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -14364,6 +14760,7 @@ "version": "0.2.3", "resolved": "http://npm.117112.xyz/vite-hot-client/-/vite-hot-client-0.2.3.tgz", "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==", + "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" }, @@ -14375,6 +14772,7 @@ "version": "1.6.0", "resolved": "http://npm.117112.xyz/vite-node/-/vite-node-1.6.0.tgz", "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -14396,6 +14794,7 @@ "version": "0.7.1", "resolved": "http://npm.117112.xyz/vite-plugin-checker/-/vite-plugin-checker-0.7.1.tgz", "integrity": "sha512-Yby+Dr6+cJlkoPagqdQQn21+ZPaYwonNSlW3VpZzoyDAxoYt7YUDhzSYrCa15iTe+X4IpiNC882a3oomxCXyTA==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", "ansi-escapes": "^4.3.0", @@ -14457,6 +14856,7 @@ "version": "4.1.2", "resolved": "http://npm.117112.xyz/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14472,6 +14872,7 @@ "version": "8.3.0", "resolved": "http://npm.117112.xyz/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "engines": { "node": ">= 12" } @@ -14480,6 +14881,7 @@ "version": "11.2.0", "resolved": "http://npm.117112.xyz/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -14493,6 +14895,7 @@ "version": "4.0.0", "resolved": "http://npm.117112.xyz/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -14501,6 +14904,7 @@ "version": "4.0.1", "resolved": "http://npm.117112.xyz/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -14512,6 +14916,7 @@ "version": "7.2.0", "resolved": "http://npm.117112.xyz/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -14523,6 +14928,7 @@ "version": "0.8.4", "resolved": "http://npm.117112.xyz/vite-plugin-inspect/-/vite-plugin-inspect-0.8.4.tgz", "integrity": "sha512-G0N3rjfw+AiiwnGw50KlObIHYWfulVwaCBUBLh2xTW9G1eM9ocE5olXkEYUbwyTmX+azM8duubi+9w5awdCz+g==", + "dev": true, "dependencies": { "@antfu/utils": "^0.7.7", "@rollup/pluginutils": "^5.1.0", @@ -14553,6 +14959,7 @@ "version": "3.0.0", "resolved": "http://npm.117112.xyz/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, "engines": { "node": ">=12" }, @@ -14564,6 +14971,7 @@ "version": "11.2.0", "resolved": "http://npm.117112.xyz/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -14577,6 +14985,7 @@ "version": "10.1.0", "resolved": "http://npm.117112.xyz/open/-/open-10.1.0.tgz", "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -14594,6 +15003,7 @@ "version": "5.1.2", "resolved": "http://npm.117112.xyz/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.1.2.tgz", "integrity": "sha512-M+yH2LlQtVNzJAljQM+61CqDXBvHim8dU5ImGaQuwlo13tMDHue5D7IC20YwDJuWDODiYc/cZBUYspVlyPf2vQ==", + "dev": true, "dependencies": { "@babel/core": "^7.23.0", "@babel/plugin-proposal-decorators": "^7.23.0", @@ -14613,6 +15023,7 @@ "version": "6.0.0", "resolved": "http://npm.117112.xyz/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "dev": true, "engines": { "node": ">=8.0.0 || >=10.0.0" } @@ -14621,6 +15032,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "dev": true, "dependencies": { "minimatch": "^3.0.4", "semver": "^7.3.4", @@ -14634,6 +15046,7 @@ "version": "7.0.0", "resolved": "http://npm.117112.xyz/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dev": true, "dependencies": { "vscode-languageserver-protocol": "3.16.0" }, @@ -14645,6 +15058,7 @@ "version": "3.16.0", "resolved": "http://npm.117112.xyz/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dev": true, "dependencies": { "vscode-jsonrpc": "6.0.0", "vscode-languageserver-types": "3.16.0" @@ -14653,17 +15067,20 @@ "node_modules/vscode-languageserver-textdocument": { "version": "1.0.11", "resolved": "http://npm.117112.xyz/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", - "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==", + "dev": true }, "node_modules/vscode-languageserver-types": { "version": "3.16.0", "resolved": "http://npm.117112.xyz/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "dev": true }, "node_modules/vscode-uri": { "version": "3.0.8", "resolved": "http://npm.117112.xyz/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true }, "node_modules/vue": { "version": "3.4.31", @@ -14689,6 +15106,7 @@ "version": "2.1.0", "resolved": "http://npm.117112.xyz/vue-bundle-renderer/-/vue-bundle-renderer-2.1.0.tgz", "integrity": "sha512-uZ+5ZJdZ/b43gMblWtcpikY6spJd0nERaM/1RtgioXNfWFbjKlUwrS8HlrddN6T2xtptmOouWclxLUkpgcVX3Q==", + "dev": true, "dependencies": { "ufo": "^1.5.3" } @@ -14696,7 +15114,8 @@ "node_modules/vue-devtools-stub": { "version": "0.1.0", "resolved": "http://npm.117112.xyz/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", - "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==" + "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==", + "dev": true }, "node_modules/vue-router": { "version": "4.4.0", @@ -14732,6 +15151,7 @@ "version": "1.1.5", "resolved": "http://npm.117112.xyz/web-encoding/-/web-encoding-1.1.5.tgz", "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dev": true, "dependencies": { "util": "^0.12.3" }, @@ -14793,6 +15213,7 @@ "version": "1.1.15", "resolved": "http://npm.117112.xyz/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -14811,6 +15232,7 @@ "version": "1.1.5", "resolved": "http://npm.117112.xyz/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -14857,6 +15279,7 @@ "version": "8.18.0", "resolved": "http://npm.117112.xyz/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, "engines": { "node": ">=10.0.0" }, @@ -14877,6 +15300,7 @@ "version": "0.5.0", "resolved": "http://npm.117112.xyz/xml2js/-/xml2js-0.5.0.tgz", "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -14889,6 +15313,7 @@ "version": "11.0.1", "resolved": "http://npm.117112.xyz/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -14987,6 +15412,7 @@ "version": "2.2.4", "resolved": "http://npm.117112.xyz/zhead/-/zhead-2.2.4.tgz", "integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==", + "dev": true, "funding": { "url": "https://github.com/sponsors/harlan-zw" } @@ -14995,6 +15421,7 @@ "version": "6.0.1", "resolved": "http://npm.117112.xyz/zip-stream/-/zip-stream-6.0.1.tgz", "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, "dependencies": { "archiver-utils": "^5.0.0", "compress-commons": "^6.0.2", @@ -15008,6 +15435,7 @@ "version": "4.5.2", "resolved": "http://npm.117112.xyz/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", diff --git a/package.json b/package.json index 033365c..8b1074c 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,6 @@ "@types/formidable": "^3.4.5", "formidable": "^3.5.1", "jsonwebtoken": "^9.0.2", - "minio": "^8.0.1", - "nuxt": "^3.12.2", "nuxt-tiptap-editor": "^1.1.2", "pinia": "^2.1.7", "uuid": "^10.0.0", @@ -34,6 +32,8 @@ "zod": "^3.23.8" }, "devDependencies": { + "@types/minio": "^7.1.1", + "nuxt": "^3.12.3", "nuxt-file-storage": "^0.2.6" } } diff --git a/pages/admin/media/[...dir].vue b/pages/admin/media/[...dir].vue deleted file mode 100644 index 6be06b4..0000000 --- a/pages/admin/media/[...dir].vue +++ /dev/null @@ -1,250 +0,0 @@ - - - - - \ No newline at end of file From b4d93ec0b18bbf9f5439f59c9428686b979713d8 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:46:44 +0800 Subject: [PATCH 07/11] Gitignore Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- .gitignore | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 499e930..c9be732 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,4 @@ logs .env .env.* !.env.example -media -media/ -media/* \ No newline at end of file +media \ No newline at end of file From a0c0c5b24b816bcbed87d5b1b3b588205e0ee6e1 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:47:24 +0800 Subject: [PATCH 08/11] Gitignore Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- .gitignore | 3 +- app/pages/admin/media/[...dir].vue | 250 +++++++++++++++++++++++++++++ 2 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 app/pages/admin/media/[...dir].vue diff --git a/.gitignore b/.gitignore index c9be732..aca1752 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ logs .env .env.* !.env.example -media \ No newline at end of file + +/media \ No newline at end of file diff --git a/app/pages/admin/media/[...dir].vue b/app/pages/admin/media/[...dir].vue new file mode 100644 index 0000000..6be06b4 --- /dev/null +++ b/app/pages/admin/media/[...dir].vue @@ -0,0 +1,250 @@ + + + + + \ No newline at end of file From 9dfe34cc3622b70a68ca6ac48cba01e6b652fd49 Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:14:18 +0800 Subject: [PATCH 09/11] Making the Browser Table into a Component for better extensibility Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- app/components/MediaBrowserTable.vue | 93 ++++++++++++++++++++++++++++ app/pages/admin/media/[...dir].vue | 65 +++---------------- 2 files changed, 101 insertions(+), 57 deletions(-) create mode 100644 app/components/MediaBrowserTable.vue diff --git a/app/components/MediaBrowserTable.vue b/app/components/MediaBrowserTable.vue new file mode 100644 index 0000000..dc930fb --- /dev/null +++ b/app/components/MediaBrowserTable.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/app/pages/admin/media/[...dir].vue b/app/pages/admin/media/[...dir].vue index 6be06b4..bbab003 100644 --- a/app/pages/admin/media/[...dir].vue +++ b/app/pages/admin/media/[...dir].vue @@ -2,12 +2,16 @@ import DashboardLayout from "~/layouts/DashboardLayout.vue"; import type {FormError, FormSubmitEvent} from "#ui/types"; +import MediaBrowserTable from "~/components/MediaBrowserTable.vue"; definePageMeta({ middleware: ['check-auth'] }) + +const $route = useRoute(), $media = useMedia(), $toast = useToast() const parseRouteDir = () => { - return parseArrayRouteDir(Array.from($route.params.dir)) + //@ts-ignore + return parseArrayRouteDir(Array.from($route.params.dir) || ['']) } const parseArrayRouteDir = (arr: string[]) => { if(arr.length == 0) return '/' @@ -22,7 +26,6 @@ const parseArrayRouteDir = (arr: string[]) => { return temp } -const $route = useRoute(), $media = useMedia(), $toast = useToast() const $dir = parseRouteDir(); const lastDirAsRoute = () => { // NOT DIRECTORY! FOR ROUTE ONLY! @@ -33,19 +36,6 @@ const lastDirAsRoute = () => { return temp.at(temp.length - 2) == '' ? '/' : '/' + parseArrayRouteDir(temp.splice(0, temp.length - 1)) } } -// console.log($dir); - -const columns = [ - { - key: 'fileName', - label: 'Name', - sortable: true, - }, - { - key: 'createdAt', - label: 'Created At' - } -] const selected = ref([]), fileRef = ref(), file = ref(), uploading = ref(false) const uploadFileModal = ref(false), newDirModal = ref(false) @@ -85,7 +75,7 @@ function onFileChange(e: Event) { } file.value = input.files[0] - state.avatar = URL.createObjectURL(input.files[0]) + state.avatar = input.files[0] ? URL.createObjectURL(input.files[0]) : '' } function onFileClick() { @@ -131,33 +121,6 @@ async function onNewDirSubmit(event: FormSubmitEvent) { uploading.value = false newDirModal.value = false } - -function select (row: any) { - //@ts-ignore - const index = selected.value.findIndex((item) => item.id === row.id) - if (index === -1) { - selected.value.push(row as never) - } else { - selected.value.splice(index, 1) - } -} - -function joinUrl(str: string): string{ - const runtimeConfig = useRuntimeConfig() - return runtimeConfig.public.siteUrl + str -} - -function parseAndFormatDate(dateString: string): string { - const date = new Date(dateString); - - const year = date.getUTCFullYear(); - const month = (date.getUTCMonth() + 1).toString().padStart(2, '0'); - const day = date.getUTCDate().toString().padStart(2, '0'); - const hours = date.getUTCHours().toString().padStart(2, '0'); - const minutes = date.getUTCMinutes().toString().padStart(2, '0'); - - return `${year}/${month}/${day}, ${hours}:${minutes}`; -} // endregion @@ -183,20 +146,8 @@ function parseAndFormatDate(dateString: string): string { Upload - - - - - + + From 46548f8bb5ae7712b6db3378ebcbb79e2e15a2fe Mon Sep 17 00:00:00 2001 From: Type-32 <87076491+Type-32@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:50:12 +0800 Subject: [PATCH 10/11] Finishing MediaBrowserTable.vue Signed-off-by: Type-32 <87076491+Type-32@users.noreply.github.com> --- app/components/MediaBrowserTable.vue | 10 +++---- app/composables/useMedia.ts | 4 +-- app/pages/admin/media/[...dir].vue | 37 ++++++++++++++++++++++-- server/api/v1/media/delete-batch.post.ts | 4 +-- server/api/v1/media/move-batch.post.ts | 4 +-- 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/app/components/MediaBrowserTable.vue b/app/components/MediaBrowserTable.vue index dc930fb..10abe01 100644 --- a/app/components/MediaBrowserTable.vue +++ b/app/components/MediaBrowserTable.vue @@ -14,7 +14,7 @@ const columns = [ ] const emits = defineEmits<{ - (e: 'onforwards', fordir: string): void + (e: 'onforwards', fordir: string, forPseudo: string): void }>() const props = defineProps({ @@ -36,8 +36,8 @@ const props = defineProps({ } }) -const handleForwards = async (fordir: string) => { - emits('onforwards', fordir) +const handleForwards = async (fordir: string, forPseudo: string) => { + emits('onforwards', fordir, forPseudo) if(props.routeForwards) { await navigateTo(`/admin${fordir}`) } @@ -75,8 +75,8 @@ function parseAndFormatDate(dateString: string): string {