refactor(projects): store images in content/, then copy them to public/ using custom nuxt module

This commit is contained in:
2025-11-23 17:51:16 +01:00
parent 986ec216ac
commit 19324c3f0b
31 changed files with 178 additions and 51 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
# generated
public/images/projects
# temporary # temporary
__old __old

View File

@@ -84,11 +84,11 @@ export const useProjectsStore = defineStore("projects", {
for (const project of projects.value) { for (const project of projects.value) {
const parts = project.id.replace(".md", "").split("/"); const parts = project.id.replace(".md", "").split("/");
const id = parts[parts.length - 1]!; const id = parts[parts.length - 2]!;
this.projects.push({ this.projects.push({
description: project.description, description: project.description,
thumbnail: `/images/projects/thumbnails/${id}.webp`, thumbnail: `/images/projects/${id}/thumbnail.webp`,
preview: `/images/projects/previews/${id}.webp`, preview: `/images/projects/${id}/preview.webp`,
url: project.url, url: project.url,
body: simplifyMarkdownAST(project.body), body: simplifyMarkdownAST(project.body),
}); });

View File

@@ -5,7 +5,7 @@ export default defineContentConfig({
collections: { collections: {
projects: defineCollection({ projects: defineCollection({
type: "page", type: "page",
source: "projects/*.md", source: "projects/**/index.md",
schema: z.object({ schema: z.object({
description: z.string(), description: z.string(),
url: z.url().nullable(), url: z.url().nullable(),

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 164 B

After

Width:  |  Height:  |  Size: 164 B

View File

@@ -3,3 +3,5 @@ description: LBF Bot - Custom Discord bot for\na gaming group
url: https://github.com/pihkaal/lbf-bot url: https://github.com/pihkaal/lbf-bot
order: 50 order: 50
--- ---
a

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 260 B

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 672 B

After

Width:  |  Height:  |  Size: 672 B

View File

Before

Width:  |  Height:  |  Size: 92 B

After

Width:  |  Height:  |  Size: 92 B

View File

Before

Width:  |  Height:  |  Size: 502 B

After

Width:  |  Height:  |  Size: 502 B

View File

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 84 B

After

Width:  |  Height:  |  Size: 84 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 118 B

View File

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 762 B

View File

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 130 B

89
modules/content-assets.ts Normal file
View File

@@ -0,0 +1,89 @@
import { defineNuxtModule, useLogger } from "@nuxt/kit";
import { copyFile, mkdir, readdir, readFile } from "fs/promises";
import { join } from "path";
import { createHash } from "crypto";
import { existsSync, watch } from "fs";
export default defineNuxtModule({
meta: {
name: "content-assets",
configKey: "contentAssets",
},
defaults: {},
async setup(_, nuxt) {
const logger = useLogger("content-assets");
const contentDir = join(nuxt.options.rootDir, "content");
const publicDir = join(nuxt.options.rootDir, "public/images/projects");
const getFileChecksum = async (filePath: string): Promise<string> => {
const content = await readFile(filePath);
return createHash("sha256").update(content).digest("hex");
};
const copyWebpFiles = async () => {
try {
const projectsDir = join(contentDir, "projects");
if (!existsSync(projectsDir)) {
logger.info("No projects directory found");
return;
}
const entries = await readdir(projectsDir, { withFileTypes: true });
for (const entry of entries) {
if (!entry.isDirectory()) continue;
const projectName = entry.name;
const sourceDir = join(projectsDir, projectName);
const destDir = join(publicDir, projectName);
if (!existsSync(destDir)) {
await mkdir(destDir, { recursive: true });
}
const files = await readdir(sourceDir);
for (const file of files) {
if (!file.endsWith(".webp")) continue;
const sourcePath = join(sourceDir, file);
const destPath = join(destDir, file);
// only copy if destination doesn't exist, or if not the same as source
let shouldCopy = true;
if (existsSync(destPath)) {
const sourceChecksum = await getFileChecksum(sourcePath);
const destChecksum = await getFileChecksum(destPath);
if (sourceChecksum === destChecksum) {
shouldCopy = false;
}
}
if (shouldCopy) {
await copyFile(sourcePath, destPath);
logger.success(`Copied: ${projectName}/${file}`);
}
}
}
} catch (error) {
logger.error("Error copying files:", error);
}
};
nuxt.hook("build:before", async () => {
await copyWebpFiles();
});
if (nuxt.options.dev) {
nuxt.hook("ready", () => {
watch(contentDir, { recursive: true }, async (_, filename) => {
if (filename?.endsWith(".webp")) {
logger.info(`Detected change: ${filename}`);
await copyWebpFiles();
}
});
});
}
},
});

View File

@@ -2,7 +2,12 @@
export default defineNuxtConfig({ export default defineNuxtConfig({
compatibilityDate: "2025-07-15", compatibilityDate: "2025-07-15",
devtools: { enabled: true }, devtools: { enabled: true },
modules: ["@nuxt/eslint", "@nuxt/content", "@pinia/nuxt"], modules: [
"@nuxt/eslint",
"@nuxt/content",
"@pinia/nuxt",
"./modules/content-assets",
],
css: ["~/assets/app.css"], css: ["~/assets/app.css"],
ssr: false, ssr: false,
}); });

View File

@@ -24,6 +24,8 @@
}, },
"devDependencies": { "devDependencies": {
"@nuxt/eslint": "^1.10.0", "@nuxt/eslint": "^1.10.0",
"@nuxt/kit": "^4.2.1",
"@types/node": "^24.10.1",
"eslint": "^9.39.1", "eslint": "^9.39.1",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"typescript": "^5.9.3", "typescript": "^5.9.3",

118
pnpm-lock.yaml generated
View File

@@ -24,7 +24,7 @@ importers:
version: 3.13.0 version: 3.13.0
nuxt: nuxt:
specifier: ^4.2.1 specifier: ^4.2.1
version: 4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1) version: 4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1)
pinia: pinia:
specifier: ^3.0.4 specifier: ^3.0.4
version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))
@@ -37,7 +37,13 @@ importers:
devDependencies: devDependencies:
"@nuxt/eslint": "@nuxt/eslint":
specifier: ^1.10.0 specifier: ^1.10.0
version: 1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) version: 1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
"@nuxt/kit":
specifier: ^4.2.1
version: 4.2.1(magicast@0.5.1)
"@types/node":
specifier: ^24.10.1
version: 24.10.1
eslint: eslint:
specifier: ^9.39.1 specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1) version: 9.39.1(jiti@2.6.1)
@@ -2227,6 +2233,12 @@ packages:
integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==, integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==,
} }
"@types/node@24.10.1":
resolution:
{
integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==,
}
"@types/parse-path@7.1.0": "@types/parse-path@7.1.0":
resolution: resolution:
{ {
@@ -7362,6 +7374,12 @@ packages:
integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==, integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==,
} }
undici-types@7.16.0:
resolution:
{
integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==,
}
unenv@2.0.0-rc.24: unenv@2.0.0-rc.24:
resolution: resolution:
{ {
@@ -8682,11 +8700,11 @@ snapshots:
"@nuxt/devalue@2.0.2": {} "@nuxt/devalue@2.0.2": {}
"@nuxt/devtools-kit@3.1.0(magicast@0.5.1)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))": "@nuxt/devtools-kit@3.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))":
dependencies: dependencies:
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
execa: 8.0.1 execa: 8.0.1
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
@@ -8701,12 +8719,12 @@ snapshots:
prompts: 2.4.2 prompts: 2.4.2
semver: 7.7.3 semver: 7.7.3
"@nuxt/devtools@3.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))": "@nuxt/devtools@3.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))":
dependencies: dependencies:
"@nuxt/devtools-kit": 3.1.0(magicast@0.5.1)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) "@nuxt/devtools-kit": 3.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
"@nuxt/devtools-wizard": 3.1.0 "@nuxt/devtools-wizard": 3.1.0
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
"@vue/devtools-core": 8.0.5(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) "@vue/devtools-core": 8.0.5(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
"@vue/devtools-kit": 8.0.5 "@vue/devtools-kit": 8.0.5
birpc: 2.8.0 birpc: 2.8.0
consola: 3.4.2 consola: 3.4.2
@@ -8731,9 +8749,9 @@ snapshots:
sirv: 3.0.2 sirv: 3.0.2
structured-clone-es: 1.0.0 structured-clone-es: 1.0.0
tinyglobby: 0.2.15 tinyglobby: 0.2.15
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vite-plugin-inspect: 11.3.3(@nuxt/kit@4.2.1(magicast@0.5.1))(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-inspect: 11.3.3(@nuxt/kit@4.2.1(magicast@0.5.1))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
vite-plugin-vue-tracer: 1.1.3(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) vite-plugin-vue-tracer: 1.1.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
which: 5.0.0 which: 5.0.0
ws: 8.18.3 ws: 8.18.3
transitivePeerDependencies: transitivePeerDependencies:
@@ -8782,10 +8800,10 @@ snapshots:
- supports-color - supports-color
- typescript - typescript
"@nuxt/eslint@1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))": "@nuxt/eslint@1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))":
dependencies: dependencies:
"@eslint/config-inspector": 1.4.1(eslint@9.39.1(jiti@2.6.1)) "@eslint/config-inspector": 1.4.1(eslint@9.39.1(jiti@2.6.1))
"@nuxt/devtools-kit": 3.1.0(magicast@0.5.1)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) "@nuxt/devtools-kit": 3.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
"@nuxt/eslint-config": 1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) "@nuxt/eslint-config": 1.10.0(@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
"@nuxt/eslint-plugin": 1.10.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) "@nuxt/eslint-plugin": 1.10.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
@@ -8861,7 +8879,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
"@nuxt/nitro-server@4.2.1(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(typescript@5.9.3)": "@nuxt/nitro-server@4.2.1(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(typescript@5.9.3)":
dependencies: dependencies:
"@nuxt/devalue": 2.0.2 "@nuxt/devalue": 2.0.2
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
@@ -8879,7 +8897,7 @@ snapshots:
klona: 2.0.6 klona: 2.0.6
mocked-exports: 0.1.1 mocked-exports: 0.1.1
nitropack: 2.12.9(better-sqlite3@12.4.1) nitropack: 2.12.9(better-sqlite3@12.4.1)
nuxt: 4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1) nuxt: 4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1)
pathe: 2.0.3 pathe: 2.0.3
pkg-types: 2.3.0 pkg-types: 2.3.0
radix3: 1.1.2 radix3: 1.1.2
@@ -8950,12 +8968,12 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
"@nuxt/vite-builder@4.2.1(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(ms@2.1.3)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))(yaml@2.8.1)": "@nuxt/vite-builder@4.2.1(@types/node@24.10.1)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(ms@2.1.3)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))(yaml@2.8.1)":
dependencies: dependencies:
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
"@rollup/plugin-replace": 6.0.3(rollup@4.53.3) "@rollup/plugin-replace": 6.0.3(rollup@4.53.3)
"@vitejs/plugin-vue": 6.0.2(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) "@vitejs/plugin-vue": 6.0.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
"@vitejs/plugin-vue-jsx": 5.1.2(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) "@vitejs/plugin-vue-jsx": 5.1.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
autoprefixer: 10.4.22(postcss@8.5.6) autoprefixer: 10.4.22(postcss@8.5.6)
consola: 3.4.2 consola: 3.4.2
cssnano: 7.1.2(postcss@8.5.6) cssnano: 7.1.2(postcss@8.5.6)
@@ -8970,7 +8988,7 @@ snapshots:
magic-string: 0.30.21 magic-string: 0.30.21
mlly: 1.8.0 mlly: 1.8.0
mocked-exports: 0.1.1 mocked-exports: 0.1.1
nuxt: 4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1) nuxt: 4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1)
pathe: 2.0.3 pathe: 2.0.3
pkg-types: 2.3.0 pkg-types: 2.3.0
postcss: 8.5.6 postcss: 8.5.6
@@ -8979,9 +8997,9 @@ snapshots:
std-env: 3.10.0 std-env: 3.10.0
ufo: 1.6.1 ufo: 1.6.1
unenv: 2.0.0-rc.24 unenv: 2.0.0-rc.24
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vite-node: 5.2.0(jiti@2.6.1)(ms@2.1.3)(terser@5.44.1)(yaml@2.8.1) vite-node: 5.2.0(@types/node@24.10.1)(jiti@2.6.1)(ms@2.1.3)(terser@5.44.1)(yaml@2.8.1)
vite-plugin-checker: 0.11.0(eslint@9.39.1(jiti@2.6.1))(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-checker: 0.11.0(eslint@9.39.1(jiti@2.6.1))(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
vue: 3.5.24(typescript@5.9.3) vue: 3.5.24(typescript@5.9.3)
vue-bundle-renderer: 2.2.0 vue-bundle-renderer: 2.2.0
transitivePeerDependencies: transitivePeerDependencies:
@@ -9513,6 +9531,10 @@ snapshots:
"@types/ms@2.1.0": {} "@types/ms@2.1.0": {}
"@types/node@24.10.1":
dependencies:
undici-types: 7.16.0
"@types/parse-path@7.1.0": "@types/parse-path@7.1.0":
dependencies: dependencies:
parse-path: 7.1.0 parse-path: 7.1.0
@@ -9702,22 +9724,22 @@ snapshots:
- rollup - rollup
- supports-color - supports-color
"@vitejs/plugin-vue-jsx@5.1.2(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))": "@vitejs/plugin-vue-jsx@5.1.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))":
dependencies: dependencies:
"@babel/core": 7.28.5 "@babel/core": 7.28.5
"@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.5) "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.5)
"@babel/plugin-transform-typescript": 7.28.5(@babel/core@7.28.5) "@babel/plugin-transform-typescript": 7.28.5(@babel/core@7.28.5)
"@rolldown/pluginutils": 1.0.0-beta.51 "@rolldown/pluginutils": 1.0.0-beta.51
"@vue/babel-plugin-jsx": 2.0.1(@babel/core@7.28.5) "@vue/babel-plugin-jsx": 2.0.1(@babel/core@7.28.5)
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vue: 3.5.24(typescript@5.9.3) vue: 3.5.24(typescript@5.9.3)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
"@vitejs/plugin-vue@6.0.2(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))": "@vitejs/plugin-vue@6.0.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))":
dependencies: dependencies:
"@rolldown/pluginutils": 1.0.0-beta.50 "@rolldown/pluginutils": 1.0.0-beta.50
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vue: 3.5.24(typescript@5.9.3) vue: 3.5.24(typescript@5.9.3)
"@volar/language-core@2.4.23": "@volar/language-core@2.4.23":
@@ -9807,14 +9829,14 @@ snapshots:
dependencies: dependencies:
"@vue/devtools-kit": 7.7.9 "@vue/devtools-kit": 7.7.9
"@vue/devtools-core@8.0.5(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))": "@vue/devtools-core@8.0.5(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))":
dependencies: dependencies:
"@vue/devtools-kit": 8.0.5 "@vue/devtools-kit": 8.0.5
"@vue/devtools-shared": 8.0.5 "@vue/devtools-shared": 8.0.5
mitt: 3.0.1 mitt: 3.0.1
nanoid: 5.1.6 nanoid: 5.1.6
pathe: 2.0.3 pathe: 2.0.3
vite-hot-client: 2.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) vite-hot-client: 2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
vue: 3.5.24(typescript@5.9.3) vue: 3.5.24(typescript@5.9.3)
transitivePeerDependencies: transitivePeerDependencies:
- vite - vite
@@ -11907,16 +11929,16 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- magicast - magicast
nuxt@4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1): nuxt@4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1):
dependencies: dependencies:
"@dxup/nuxt": 0.2.2(magicast@0.5.1) "@dxup/nuxt": 0.2.2(magicast@0.5.1)
"@nuxt/cli": 3.30.0(magicast@0.5.1) "@nuxt/cli": 3.30.0(magicast@0.5.1)
"@nuxt/devtools": 3.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) "@nuxt/devtools": 3.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
"@nuxt/nitro-server": 4.2.1(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(typescript@5.9.3) "@nuxt/nitro-server": 4.2.1(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(ioredis@5.8.2)(magicast@0.5.1)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(typescript@5.9.3)
"@nuxt/schema": 4.2.1 "@nuxt/schema": 4.2.1
"@nuxt/telemetry": 2.6.6(magicast@0.5.1) "@nuxt/telemetry": 2.6.6(magicast@0.5.1)
"@nuxt/vite-builder": 4.2.1(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(ms@2.1.3)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))(yaml@2.8.1) "@nuxt/vite-builder": 4.2.1(@types/node@24.10.1)(eslint@9.39.1(jiti@2.6.1))(magicast@0.5.1)(ms@2.1.3)(nuxt@4.2.1(@parcel/watcher@2.5.1)(@types/node@24.10.1)(@vue/compiler-sfc@3.5.24)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(ms@2.1.3)(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.3)(terser@5.44.1)(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))(yaml@2.8.1)
"@unhead/vue": 2.0.19(vue@3.5.24(typescript@5.9.3)) "@unhead/vue": 2.0.19(vue@3.5.24(typescript@5.9.3))
"@vue/shared": 3.5.24 "@vue/shared": 3.5.24
c12: 3.3.2(magicast@0.5.1) c12: 3.3.2(magicast@0.5.1)
@@ -11968,6 +11990,7 @@ snapshots:
vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3)) vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3))
optionalDependencies: optionalDependencies:
"@parcel/watcher": 2.5.1 "@parcel/watcher": 2.5.1
"@types/node": 24.10.1
transitivePeerDependencies: transitivePeerDependencies:
- "@azure/app-configuration" - "@azure/app-configuration"
- "@azure/cosmos" - "@azure/cosmos"
@@ -13101,6 +13124,8 @@ snapshots:
magic-string: 0.30.21 magic-string: 0.30.21
unplugin: 2.3.10 unplugin: 2.3.10
undici-types@7.16.0: {}
unenv@2.0.0-rc.24: unenv@2.0.0-rc.24:
dependencies: dependencies:
pathe: 2.0.3 pathe: 2.0.3
@@ -13314,23 +13339,23 @@ snapshots:
"@types/unist": 3.0.3 "@types/unist": 3.0.3
vfile-message: 4.0.3 vfile-message: 4.0.3
vite-dev-rpc@1.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)): vite-dev-rpc@1.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)):
dependencies: dependencies:
birpc: 2.8.0 birpc: 2.8.0
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vite-hot-client: 2.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) vite-hot-client: 2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
vite-hot-client@2.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)): vite-hot-client@2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)):
dependencies: dependencies:
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vite-node@5.2.0(jiti@2.6.1)(ms@2.1.3)(terser@5.44.1)(yaml@2.8.1): vite-node@5.2.0(@types/node@24.10.1)(jiti@2.6.1)(ms@2.1.3)(terser@5.44.1)(yaml@2.8.1):
dependencies: dependencies:
cac: 6.7.14 cac: 6.7.14
es-module-lexer: 1.7.0 es-module-lexer: 1.7.0
obug: 2.0.0(ms@2.1.3) obug: 2.0.0(ms@2.1.3)
pathe: 2.0.3 pathe: 2.0.3
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
transitivePeerDependencies: transitivePeerDependencies:
- "@types/node" - "@types/node"
- jiti - jiti
@@ -13345,7 +13370,7 @@ snapshots:
- tsx - tsx
- yaml - yaml
vite-plugin-checker@0.11.0(eslint@9.39.1(jiti@2.6.1))(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)): vite-plugin-checker@0.11.0(eslint@9.39.1(jiti@2.6.1))(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)):
dependencies: dependencies:
"@babel/code-frame": 7.27.1 "@babel/code-frame": 7.27.1
chokidar: 4.0.3 chokidar: 4.0.3
@@ -13354,14 +13379,14 @@ snapshots:
picomatch: 4.0.3 picomatch: 4.0.3
tiny-invariant: 1.3.3 tiny-invariant: 1.3.3
tinyglobby: 0.2.15 tinyglobby: 0.2.15
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vscode-uri: 3.1.0 vscode-uri: 3.1.0
optionalDependencies: optionalDependencies:
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
optionator: 0.9.4 optionator: 0.9.4
typescript: 5.9.3 typescript: 5.9.3
vite-plugin-inspect@11.3.3(@nuxt/kit@4.2.1(magicast@0.5.1))(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)): vite-plugin-inspect@11.3.3(@nuxt/kit@4.2.1(magicast@0.5.1))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)):
dependencies: dependencies:
ansis: 4.2.0 ansis: 4.2.0
debug: 4.4.3 debug: 4.4.3
@@ -13371,24 +13396,24 @@ snapshots:
perfect-debounce: 2.0.0 perfect-debounce: 2.0.0
sirv: 3.0.2 sirv: 3.0.2
unplugin-utils: 0.3.1 unplugin-utils: 0.3.1
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vite-dev-rpc: 1.1.0(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)) vite-dev-rpc: 1.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
optionalDependencies: optionalDependencies:
"@nuxt/kit": 4.2.1(magicast@0.5.1) "@nuxt/kit": 4.2.1(magicast@0.5.1)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite-plugin-vue-tracer@1.1.3(vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)): vite-plugin-vue-tracer@1.1.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)):
dependencies: dependencies:
estree-walker: 3.0.3 estree-walker: 3.0.3
exsolve: 1.0.8 exsolve: 1.0.8
magic-string: 0.30.21 magic-string: 0.30.21
pathe: 2.0.3 pathe: 2.0.3
source-map-js: 1.2.1 source-map-js: 1.2.1
vite: 7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1) vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1)
vue: 3.5.24(typescript@5.9.3) vue: 3.5.24(typescript@5.9.3)
vite@7.2.2(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1): vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1):
dependencies: dependencies:
esbuild: 0.25.12 esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3) fdir: 6.5.0(picomatch@4.0.3)
@@ -13397,6 +13422,7 @@ snapshots:
rollup: 4.53.3 rollup: 4.53.3
tinyglobby: 0.2.15 tinyglobby: 0.2.15
optionalDependencies: optionalDependencies:
"@types/node": 24.10.1
fsevents: 2.3.3 fsevents: 2.3.3
jiti: 2.6.1 jiti: 2.6.1
terser: 5.44.1 terser: 5.44.1