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
__old

View File

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

View File

@@ -5,7 +5,7 @@ export default defineContentConfig({
collections: {
projects: defineCollection({
type: "page",
source: "projects/*.md",
source: "projects/**/index.md",
schema: z.object({
description: z.string(),
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
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({
compatibilityDate: "2025-07-15",
devtools: { enabled: true },
modules: ["@nuxt/eslint", "@nuxt/content", "@pinia/nuxt"],
modules: [
"@nuxt/eslint",
"@nuxt/content",
"@pinia/nuxt",
"./modules/content-assets",
],
css: ["~/assets/app.css"],
ssr: false,
});

View File

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

118
pnpm-lock.yaml generated
View File

@@ -24,7 +24,7 @@ importers:
version: 3.13.0
nuxt:
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:
specifier: ^3.0.4
version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))
@@ -37,7 +37,13 @@ importers:
devDependencies:
"@nuxt/eslint":
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:
specifier: ^9.39.1
version: 9.39.1(jiti@2.6.1)
@@ -2227,6 +2233,12 @@ packages:
integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==,
}
"@types/node@24.10.1":
resolution:
{
integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==,
}
"@types/parse-path@7.1.0":
resolution:
{
@@ -7362,6 +7374,12 @@ packages:
integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==,
}
undici-types@7.16.0:
resolution:
{
integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==,
}
unenv@2.0.0-rc.24:
resolution:
{
@@ -8682,11 +8700,11 @@ snapshots:
"@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:
"@nuxt/kit": 4.2.1(magicast@0.5.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:
- magicast
@@ -8701,12 +8719,12 @@ snapshots:
prompts: 2.4.2
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:
"@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/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
birpc: 2.8.0
consola: 3.4.2
@@ -8731,9 +8749,9 @@ snapshots:
sirv: 3.0.2
structured-clone-es: 1.0.0
tinyglobby: 0.2.15
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(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: 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(@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(@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
ws: 8.18.3
transitivePeerDependencies:
@@ -8782,10 +8800,10 @@ snapshots:
- supports-color
- 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:
"@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-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)
@@ -8861,7 +8879,7 @@ snapshots:
transitivePeerDependencies:
- 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:
"@nuxt/devalue": 2.0.2
"@nuxt/kit": 4.2.1(magicast@0.5.1)
@@ -8879,7 +8897,7 @@ snapshots:
klona: 2.0.6
mocked-exports: 0.1.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
pkg-types: 2.3.0
radix3: 1.1.2
@@ -8950,12 +8968,12 @@ snapshots:
transitivePeerDependencies:
- 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:
"@nuxt/kit": 4.2.1(magicast@0.5.1)
"@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-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": 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(@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)
consola: 3.4.2
cssnano: 7.1.2(postcss@8.5.6)
@@ -8970,7 +8988,7 @@ snapshots:
magic-string: 0.30.21
mlly: 1.8.0
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
pkg-types: 2.3.0
postcss: 8.5.6
@@ -8979,9 +8997,9 @@ snapshots:
std-env: 3.10.0
ufo: 1.6.1
unenv: 2.0.0-rc.24
vite: 7.2.2(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-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: 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(@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(@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-bundle-renderer: 2.2.0
transitivePeerDependencies:
@@ -9513,6 +9531,10 @@ snapshots:
"@types/ms@2.1.0": {}
"@types/node@24.10.1":
dependencies:
undici-types: 7.16.0
"@types/parse-path@7.1.0":
dependencies:
parse-path: 7.1.0
@@ -9702,22 +9724,22 @@ snapshots:
- rollup
- 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:
"@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)
"@rolldown/pluginutils": 1.0.0-beta.51
"@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)
transitivePeerDependencies:
- 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:
"@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)
"@volar/language-core@2.4.23":
@@ -9807,14 +9829,14 @@ snapshots:
dependencies:
"@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:
"@vue/devtools-kit": 8.0.5
"@vue/devtools-shared": 8.0.5
mitt: 3.0.1
nanoid: 5.1.6
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)
transitivePeerDependencies:
- vite
@@ -11907,16 +11929,16 @@ snapshots:
transitivePeerDependencies:
- 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:
"@dxup/nuxt": 0.2.2(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/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/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))
"@vue/shared": 3.5.24
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))
optionalDependencies:
"@parcel/watcher": 2.5.1
"@types/node": 24.10.1
transitivePeerDependencies:
- "@azure/app-configuration"
- "@azure/cosmos"
@@ -13101,6 +13124,8 @@ snapshots:
magic-string: 0.30.21
unplugin: 2.3.10
undici-types@7.16.0: {}
unenv@2.0.0-rc.24:
dependencies:
pathe: 2.0.3
@@ -13314,23 +13339,23 @@ snapshots:
"@types/unist": 3.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:
birpc: 2.8.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(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(@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:
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:
cac: 6.7.14
es-module-lexer: 1.7.0
obug: 2.0.0(ms@2.1.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:
- "@types/node"
- jiti
@@ -13345,7 +13370,7 @@ snapshots:
- tsx
- 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:
"@babel/code-frame": 7.27.1
chokidar: 4.0.3
@@ -13354,14 +13379,14 @@ snapshots:
picomatch: 4.0.3
tiny-invariant: 1.3.3
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
optionalDependencies:
eslint: 9.39.1(jiti@2.6.1)
optionator: 0.9.4
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:
ansis: 4.2.0
debug: 4.4.3
@@ -13371,24 +13396,24 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.2
unplugin-utils: 0.3.1
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(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(@types/node@24.10.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.1))
optionalDependencies:
"@nuxt/kit": 4.2.1(magicast@0.5.1)
transitivePeerDependencies:
- 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:
estree-walker: 3.0.3
exsolve: 1.0.8
magic-string: 0.30.21
pathe: 2.0.3
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)
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:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -13397,6 +13422,7 @@ snapshots:
rollup: 4.53.3
tinyglobby: 0.2.15
optionalDependencies:
"@types/node": 24.10.1
fsevents: 2.3.3
jiti: 2.6.1
terser: 5.44.1