diff --git a/package.json b/package.json index 955f38a2..cf761516 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@iconify-json/lucide": "^1.2.72", - "@nuxtjs/mdc": "^0.18.2", + "@nuxtjs/mdc": "^0.18.3", "@vueuse/core": "^13.9.0", "defu": "^6.1.4", "destr": "^2.0.5", @@ -55,7 +55,7 @@ "@iconify-json/simple-icons": "^1.2.57", "@nuxt/content": "^3.8.0", "@nuxt/eslint-config": "^1.10.0", - "@nuxt/kit": "^4.2.0", + "@nuxt/kit": "^4.2.1", "@nuxt/module-builder": "^1.0.2", "@nuxt/ui": "^4.1.0", "@octokit/types": "^15.0.1", @@ -85,7 +85,7 @@ "resolutions": { "remark-mdc": "3.8.1" }, - "packageManager": "pnpm@10.20.0", + "packageManager": "pnpm@10.21.0", "keywords": [ "nuxt", "content", diff --git a/playground/docus/package.json b/playground/docus/package.json index e435f633..fbffd108 100644 --- a/playground/docus/package.json +++ b/playground/docus/package.json @@ -8,7 +8,7 @@ "dependencies": { "docus": "^5.2.1", "better-sqlite3": "^12.4.1", - "nuxt": "latest", + "nuxt": "^4.2.1", "@nuxt/content": "latest", "@nuxt/ui": "4.1.0", "nuxt-studio": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fe1084e..3ae1d610 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,13 +13,13 @@ importers: dependencies: '@iconify-json/lucide': specifier: ^1.2.72 - version: 1.2.72 + version: 1.2.73 '@nuxtjs/mdc': - specifier: ^0.18.2 - version: 0.18.2(magicast@0.3.5) + specifier: ^0.18.3 + version: 0.18.3 '@vueuse/core': specifier: ^13.9.0 - version: 13.9.0(vue@3.5.22(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) defu: specifier: ^6.1.4 version: 6.1.4 @@ -32,43 +32,43 @@ importers: devDependencies: '@iconify-json/simple-icons': specifier: ^1.2.57 - version: 1.2.57 + version: 1.2.58 '@nuxt/content': specifier: ^3.8.0 - version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.3.5) + version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.1) '@nuxt/eslint-config': specifier: ^1.10.0 - version: 1.10.0(@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.22)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + version: 1.10.0(@typescript-eslint/utils@8.46.4(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/kit': - specifier: ^4.2.0 - version: 4.2.0(magicast@0.3.5) + specifier: ^4.2.1 + version: 4.2.1(magicast@0.5.1) '@nuxt/module-builder': specifier: ^1.0.2 - version: 1.0.2(@nuxt/cli@3.29.3(magicast@0.3.5))(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)) + version: 1.0.2(@nuxt/cli@3.30.0)(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) '@nuxt/ui': specifier: ^4.1.0 - version: 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(zod@4.1.12) + version: 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))(zod@4.1.12) '@octokit/types': specifier: ^15.0.1 - version: 15.0.1 + version: 15.0.2 '@release-it/conventional-changelog': specifier: ^10.0.1 - version: 10.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)(release-it@19.0.6(@types/node@24.9.1)(magicast@0.3.5)) + version: 10.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)(release-it@19.0.6(@types/node@24.10.1)) '@tailwindcss/typography': specifier: ^0.5.19 - version: 0.5.19(tailwindcss@4.1.16) + version: 0.5.19(tailwindcss@4.1.17) '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 '@unhead/vue': specifier: ^2.0.19 - version: 2.0.19(vue@3.5.22(typescript@5.9.3)) + version: 2.0.19(vue@3.5.24(typescript@5.9.3)) '@unpic/vue': specifier: ^1.0.0 version: 1.0.0(typescript@5.9.3) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + version: 6.0.1(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) eslint: specifier: ^9.39.1 version: 9.39.1(jiti@2.6.1) @@ -89,28 +89,28 @@ importers: version: 1.5.1 release-it: specifier: ^19.0.6 - version: 19.0.6(@types/node@24.9.1)(magicast@0.3.5) + version: 19.0.6(@types/node@24.10.1) tailwindcss: specifier: ^4.1.16 - version: 4.1.16 + version: 4.1.17 vite: specifier: ^7.2.0 - version: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.9.1)(rollup@4.52.5)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.10.1)(rollup@4.53.2)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-libcss: specifier: ^1.1.2 - version: 1.1.2(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) + version: 1.1.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) vue: specifier: ^3.5.22 - version: 3.5.22(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: ^4.6.3 - version: 4.6.3(vue@3.5.22(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) vue-tsc: specifier: ^3.1.3 version: 3.1.3(typescript@5.9.3) @@ -122,19 +122,19 @@ importers: dependencies: '@nuxt/content': specifier: latest - version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.0) + version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.1) '@nuxt/ui': specifier: 4.1.0 - version: 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(zod@4.1.12) + version: 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))(zod@4.1.12) better-sqlite3: specifier: ^12.4.1 version: 12.4.1 docus: specifier: ^5.2.1 - version: 5.2.1(98b70214e17197e9487d2d5efeebcd8f) + version: 5.2.1(9b58943e116e8343a25ebf63a38b8a7a) nuxt: - specifier: latest - version: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) + specifier: ^4.2.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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) nuxt-studio: specifier: workspace:* version: link:../.. @@ -143,27 +143,27 @@ importers: dependencies: '@nuxt/content': specifier: latest - version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.3.5) + version: 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.1) better-sqlite3: specifier: ^12.4.1 version: 12.4.1 nuxt: specifier: latest - version: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) nuxt-studio: specifier: workspace:* version: link:../.. packages: - '@ai-sdk/gateway@2.0.2': - resolution: {integrity: sha512-25F1qPqZxOw9IcV9OQCL29hV4HAFLw5bFWlzQLBi5aDhEZsTMT2rMi3umSqNaUxrrw+dLRtjOL7RbHC+WjbA/A==} + '@ai-sdk/gateway@2.0.8': + resolution: {integrity: sha512-cA5Sh5pjmsMOlzCxsX9B4bGB9qOn9/HRxKb8ry1OYmrXP3i1t34eZMHA7EVFoB09I41p0LPwkRBACYXm15xokw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@3.0.13': - resolution: {integrity: sha512-aXFLBLRPTUYA853MJliItefSXeJPl+mg0KSjbToP41kJ+banBmHO8ZPGLJhNqGlCU82o11TYN7G05EREKX8CkA==} + '@ai-sdk/provider-utils@3.0.17': + resolution: {integrity: sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -172,8 +172,8 @@ packages: resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/vue@2.0.81': - resolution: {integrity: sha512-GwHVN06bsmGmc7jjr7MAWfuU/UxVgva2tapEiMS9wlNA9aJRBN4Unllp26f5zr24KGZl5XHlAB/cU5DluPm+QQ==} + '@ai-sdk/vue@2.0.92': + resolution: {integrity: sha512-ijogE/zqzKdrvSL3L9OMeG0rvaVGJWomgNT3WYOJOtjbYjelq9mtg1bwBSfomQBPBw4QO078BL9krKn8uN9dyw==} engines: {node: '>=18'} peerDependencies: vue: ^3.3.4 @@ -315,8 +315,8 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@capsizecss/metrics@3.5.0': - resolution: {integrity: sha512-Ju2I/Qn3c1OaU8FgeW4Tc22D4C9NwyVfKzNmzst59bvxBjPoLYNZMqFYn+HvCtn4MpXwiaDtCE8fNuQLpdi9yA==} + '@capsizecss/metrics@3.6.1': + resolution: {integrity: sha512-YfRs0/oAcmTL9welip8EKJzArGMeCKY5zWIGj20oHOSJBG1KmkNAvRSN9VPzoJUSXaoMpy+XPEggOPgEhUWZBA==} '@capsizecss/unpack@2.4.0': resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} @@ -343,17 +343,17 @@ packages: conventional-commits-parser: optional: true - '@dxup/nuxt@0.2.0': - resolution: {integrity: sha512-tUS2040HEiGwjwZ8hTczfuRoiXSOuA+ATPXO9Bllf03nHHj1lSlmaAyVJHFsSXL5Os5NZqimNAZ1iDed7VElzA==} + '@dxup/nuxt@0.2.1': + resolution: {integrity: sha512-0RLwkep6ftN3nd4Pfcgwrz8L5D2p5Tf8DKs3pr91TYO22N8loa9y8oPLQnJDqvrT0FBMEiCyPA7C8AMl7THPPg==} - '@dxup/unimport@0.1.0': - resolution: {integrity: sha512-6Q/Po8qGmlrShdG/R9+rpIhme9N/PGJumpvmwr1UAxGpt9DfOCt9kF8+yJkxhtPdJFL37KgUILZBRAkSU8cJZg==} + '@dxup/unimport@0.1.1': + resolution: {integrity: sha512-DLrjNapztDceDgvVL28D/8CyXIVbhIRGvYl+QGeiclLG6UZjG0a2q4+bGBeTfbt++wF0F7lYaI/MipPmXSNgnA==} - '@emnapi/core@1.6.0': - resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/core@1.7.0': + resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} - '@emnapi/runtime@1.6.0': - resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/runtime@1.7.0': + resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -366,158 +366,158 @@ packages: resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} engines: {node: '>=10'} - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -532,8 +532,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.4.0': - resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} + '@eslint/compat@1.4.1': + resolution: {integrity: sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.40 || 9 @@ -549,10 +549,6 @@ packages: resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.17.0': resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -561,10 +557,6 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.39.1': resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -573,10 +565,6 @@ packages: resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.0': - resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.1': resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -620,23 +608,17 @@ packages: resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} - '@iconify-json/lucide@1.2.71': - resolution: {integrity: sha512-KL+3JHW+wN8QqT3CN+7e1SzTe+gIunFBuUICtVmdCmdVRx+MdGNkX4xJhXoYHfhYO2azrEhoGPG+It9k30aZkw==} - - '@iconify-json/lucide@1.2.72': - resolution: {integrity: sha512-kq/ZDUtCdBfjGxIMaUI+Ctt3dC/0sHmrUyTU1i04+8ehlo3/PUGKqrJd4C9J/kQl1jfcHpaUPqGUFvgZ9orhQg==} + '@iconify-json/lucide@1.2.73': + resolution: {integrity: sha512-++HFkqDNu4jqG5+vYT+OcVj9OiuPCw9wQuh8G5QWQnBRSJ9eKwSStiU8ORgOoK07xJsm/0VIHySMniXUUXP9Gw==} - '@iconify-json/simple-icons@1.2.56': - resolution: {integrity: sha512-oAvxOzgSjfvdj/Jsi3S7HDUCxO8/n2j8e1w1e/FktHUAXiWjNX00n3Tu3AP+n1ayKrypcUDXCzxn+0ENMl6ouw==} - - '@iconify-json/simple-icons@1.2.57': - resolution: {integrity: sha512-/yWbO502M6WfvmcV5OjEgA4uoPN/76nrn7Hri/8g9L4GiNQ6VMgXWE9vFp4tDsmGMAe4ZCov3NbH6vJCgXZ1hA==} + '@iconify-json/simple-icons@1.2.58': + resolution: {integrity: sha512-XtXEoRALqztdNc9ujYBj2tTCPKdIPKJBdLNDebFF46VV1aOAwTbAYMgNsK5GMCpTJupLCmpBWDn+gX5SpECorQ==} '@iconify-json/vscode-icons@1.2.33': resolution: {integrity: sha512-2lKDybGxXXeLeeqeNT2YVDYXs5va0YMHf06w3GemS22j/0CCTpKwKDK7REaibsCq3bRV8qX0RJDM4AbREE7L+w==} - '@iconify/collections@1.0.612': - resolution: {integrity: sha512-YwafHLk3sCSNWt5pxPEnR1O3LRD//zRJXye3T6KK7kkybOKc8mu8tscOuqlIH7qmfPh273SZldVR4HuBs+pdcQ==} + '@iconify/collections@1.0.617': + resolution: {integrity: sha512-coRyOUT2gQ8SHptjaW5YG2VEscoIcpEAN/mn1UgorKKgoA6l+aoebW58WXLWcvSZ4LKEmim3Hnp/bLMLMoOejg==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -649,12 +631,12 @@ packages: peerDependencies: vue: '>=3' - '@inquirer/ansi@1.0.1': - resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/checkbox@4.3.0': - resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} + '@inquirer/checkbox@4.3.1': + resolution: {integrity: sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -662,8 +644,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.19': - resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} + '@inquirer/confirm@5.1.20': + resolution: {integrity: sha512-HDGiWh2tyRZa0M1ZnEIUCQro25gW/mN8ODByicQrbR1yHx4hT+IOpozCMi5TgBtUdklLwRI2mv14eNpftDluEw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -671,8 +653,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.3.0': - resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} + '@inquirer/core@10.3.1': + resolution: {integrity: sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -680,8 +662,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.21': - resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} + '@inquirer/editor@4.2.22': + resolution: {integrity: sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -689,8 +671,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.21': - resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} + '@inquirer/expand@4.0.22': + resolution: {integrity: sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -698,8 +680,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -707,12 +689,12 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.14': - resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/input@4.2.5': - resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} + '@inquirer/input@4.3.0': + resolution: {integrity: sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -720,8 +702,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.21': - resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} + '@inquirer/number@3.0.22': + resolution: {integrity: sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -729,8 +711,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.21': - resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} + '@inquirer/password@4.0.22': + resolution: {integrity: sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -738,8 +720,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.9.0': - resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} + '@inquirer/prompts@7.10.0': + resolution: {integrity: sha512-X2HAjY9BClfFkJ2RP3iIiFxlct5JJVdaYYXhA7RKxsbc9KL+VbId79PSoUGH/OLS011NFbHHDMDcBKUj3T89+Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -747,8 +729,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.9': - resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} + '@inquirer/rawlist@4.1.10': + resolution: {integrity: sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -756,8 +738,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.2.0': - resolution: {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} + '@inquirer/search@3.2.1': + resolution: {integrity: sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -765,8 +747,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.4.0': - resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} + '@inquirer/select@4.4.1': + resolution: {integrity: sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -774,8 +756,8 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.9': - resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -809,8 +791,8 @@ packages: resolution: {integrity: sha512-Uccp4VtalUSk/b4F9nBBs7VGgIh9VnXTSHHQ+Kc0AetsHJLxdi04LfhfSi4dujtsTAWnHMHWZw07UbMm6Umq1g==} engines: {node: '>= 16'} - '@intlify/h3@0.7.1': - resolution: {integrity: sha512-D/9+L7IzPrOa7e6R/ztepXayAq+snfzBYIwAk3RbaQsLEXwVNjC5c+WKXjni1boc/plGRegw4/m33SaFwvdEpg==} + '@intlify/h3@0.7.4': + resolution: {integrity: sha512-BtL5+U3Dd9Qz6so+ArOMQWZ+nV21rOqqYUXnqwvW6J3VUXr66A9+9+vUFb/NAQvOU4kdfkO3c/9LMRGU9WZ8vw==} engines: {node: '>= 20'} '@intlify/message-compiler@11.1.12': @@ -908,18 +890,18 @@ packages: engines: {node: '>=18'} hasBin: true - '@microsoft/api-extractor-model@7.31.3': - resolution: {integrity: sha512-dv4quQI46p0U03TCEpasUf6JrJL3qjMN7JUAobsPElxBv4xayYYvWW9aPpfYV+Jx6hqUcVaLVOeV7+5hxsyoFQ==} + '@microsoft/api-extractor-model@7.32.0': + resolution: {integrity: sha512-QIVJSreb8fGGJy1Qx0yzGVXxvHJN1WXgkFNHFheVv1iBJNqgvp+xeT3ienJmRwXmPPc5Es/cxBrXtKZJR3i7iw==} - '@microsoft/api-extractor@7.53.3': - resolution: {integrity: sha512-p2HmQaMSVqMBj3bH3643f8xApKAqrF1jNpPsMCTQOYCYgfwLnvzsve8c+bgBWzCOBBgLK54PB6ZLIWMGLg8CZA==} + '@microsoft/api-extractor@7.55.0': + resolution: {integrity: sha512-TYc5OtAK/9E3HGgd2bIfSjQDYIwPc0dysf9rPiwXZGsq916I6W2oww9bhm1OxPOeg6rMfOX3PoroGd7oCryYog==} hasBin: true - '@microsoft/tsdoc-config@0.17.1': - resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + '@microsoft/tsdoc-config@0.18.0': + resolution: {integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==} - '@microsoft/tsdoc@0.15.1': - resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + '@microsoft/tsdoc@0.16.0': + resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} '@miyaneee/rollup-plugin-json5@1.2.0': resolution: {integrity: sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==} @@ -947,8 +929,8 @@ packages: '@nodeutils/defaults-deep@1.1.0': resolution: {integrity: sha512-gG44cwQovaOFdSR02jR9IhVRpnDP64VN6JdjYJTfNz4J4fWn7TQnmrf22nSjRqlwlxPcW8PL/L3KbJg3tdwvpg==} - '@nuxt/cli@3.29.3': - resolution: {integrity: sha512-48GYmH4SyzR5pqd02UXVzBfrvEGaurPKMjSWxlHgqnpI5buwOYCvH+OqvHOmvnLrDP2bxR9hbDod/UIphOjMhg==} + '@nuxt/cli@3.30.0': + resolution: {integrity: sha512-nBNEkvOwqzxgvfTBUKPX0zN4h85dWjjkW+kP4OFnVaN3C3kdsbScNtYPIZyp0+ArabL5t4RT93Gyx0IZMRNzAQ==} engines: {node: ^16.10.0 || >=18.0.0} hasBin: true @@ -983,15 +965,24 @@ packages: peerDependencies: vite: '>=6.0' - '@nuxt/devtools-wizard@2.7.0': - resolution: {integrity: sha512-iWuWR0U6BRpF7D6xrgq9ZkQ6ajsw2EA/gVmbU9V5JPKRUtV6DVpCPi+h34VFNeQ104Sf531XgvT0sl3h93AjXA==} + '@nuxt/devtools-kit@3.1.0': + resolution: {integrity: sha512-1AEZS6ge8G9X3sJauw6hTWqTpUIVqs5Uq9d7Z9cjUAinXjE+pGliVQ+i8xWCNnGLaZCCSqX/I/M/EByD3v2JIA==} + peerDependencies: + vite: '>=6.0' + + '@nuxt/devtools-wizard@3.1.0': + resolution: {integrity: sha512-XYYWnG6SAvALCdXbM+xklqv7sEiVZbKgGparv8jFE5Tt6l8sg80Eb+vM40+Xpdu2KE3VlFKj4F4oFwDXMvAkgA==} hasBin: true - '@nuxt/devtools@2.7.0': - resolution: {integrity: sha512-BtIklVYny14Ykek4SHeexAHoa28MEV9kz223ZzvoNYqE0f+YVV+cJP69ovZHf+HUVpxaAMJfWKLHXinWXiCZ4Q==} + '@nuxt/devtools@3.1.0': + resolution: {integrity: sha512-aPH5V3j6h8bprMTR7oDqJ1AfHl0FL2JHcGlbrCA5DXLLhLL+D4L8pLgiJLEvYMo3Onk56TT7aXgPX54g/eDetg==} hasBin: true peerDependencies: + '@vitejs/devtools': '*' vite: '>=6.0' + peerDependenciesMeta: + '@vitejs/devtools': + optional: true '@nuxt/eslint-config@1.10.0': resolution: {integrity: sha512-6Ry+sV5FaTBg3a0l+4gcxuz0IsQG5dSF6OxHNDlDx2yTygMOxeCn6vdc2Cz/e4LtYGvwZIlhH9wVlnWnD3+G+Q==} @@ -1017,12 +1008,12 @@ packages: resolution: {integrity: sha512-4kzhvb2tJfxMsa/JZeYn1sMiGbx2J/S6BQrQSdXNsHgSvywGVkFhTiQGjoP6O49EsXyAouJrer47hMeBcTcfXQ==} engines: {node: '>=18.20.6'} - '@nuxt/kit@3.20.0': - resolution: {integrity: sha512-EoF1Gf0SPj9vxgAIcGEH+a4PRLC7Dwsy21K6f5+POzylT8DgssN8zL5pwXC+X7OcfzBrwYFh7mM7phvh7ubgeg==} + '@nuxt/kit@3.20.1': + resolution: {integrity: sha512-TIslaylfI5kd3AxX5qts0qyrIQ9Uq3HAA1bgIIJ+c+zpDfK338YS+YrCWxBBzDMECRCbAS58mqAd2MtJfG1ENA==} engines: {node: '>=18.12.0'} - '@nuxt/kit@4.2.0': - resolution: {integrity: sha512-1yN3LL6RDN5GjkNLPUYCbNRkaYnat6hqejPyfIBBVzrWOrpiQeNMGxQM/IcVdaSuBJXAnu0sUvTKXpXkmPhljg==} + '@nuxt/kit@4.2.1': + resolution: {integrity: sha512-lLt8KLHyl7IClc3RqRpRikz15eCfTRlAWL9leVzPyg5N87FfKE/7EWgWvpiL/z4Tf3dQCIqQb88TmHE0JTIDvA==} engines: {node: '>=18.12.0'} '@nuxt/module-builder@1.0.2': @@ -1033,14 +1024,14 @@ packages: '@nuxt/cli': ^3.26.4 typescript: ^5.8.3 - '@nuxt/nitro-server@4.2.0': - resolution: {integrity: sha512-1fZwAV+VTQwmPVUYKH+eoeB+3jPE+c/mreK3PpuY6vvrIDuMh9L4QIeLFB0fIcY2MJ4XkvjU/5w3B9uu3GR9yQ==} + '@nuxt/nitro-server@4.2.1': + resolution: {integrity: sha512-P6zGvKgbjwDO28A4QnRuhL0riNSxcw317nGSYfP9Z+V+GyCNVc9yCcAEuzRIvm+dv4PB6VC708my8Jq30VM9Ow==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - nuxt: ^4.2.0 + nuxt: ^4.2.1 - '@nuxt/schema@4.2.0': - resolution: {integrity: sha512-YMbgpEyPokgOYME6BvY8Okk7GAIwhEFYzrkkkoU9IVgu0tKWetYRrjUwbd0eICqPm9EWDBQl5tTTNJ8xCndVbw==} + '@nuxt/schema@4.2.1': + resolution: {integrity: sha512-kSuma7UztDVyw8eAmN3rKFoaWjNRkJE9+kqwEurpuxG7nCwFPS7sUPSGzovzaofP+xV30tl6wveBEcDRWyQvgA==} engines: {node: ^14.18.0 || >=16.10.0} '@nuxt/telemetry@2.6.6': @@ -1076,11 +1067,11 @@ packages: zod: optional: true - '@nuxt/vite-builder@4.2.0': - resolution: {integrity: sha512-pNHIoO8kiSsOnoMo2zmxy0mk71ZBP4KJCiXr7Ahq8ewOm4W4vFQ1NV1O46wJGZyxlPC6nqFuYBvcUwVp1LgTNg==} + '@nuxt/vite-builder@4.2.1': + resolution: {integrity: sha512-SuBxCtGrHcbgrtzHwJgLe0pBXWw2T9RFQx9JQ7A3dE9RjBhzjaxtmjVHx7vtq6DCGi0d0WlW1Z1lBZUDaXy8WA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - nuxt: 4.2.0 + nuxt: 4.2.1 rolldown: ^1.0.0-beta.38 vue: ^3.3.4 peerDependenciesMeta: @@ -1090,15 +1081,16 @@ packages: '@nuxtjs/color-mode@3.5.2': resolution: {integrity: sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==} - '@nuxtjs/i18n@10.1.2': - resolution: {integrity: sha512-3OY8eozqNRiaZaMcmZPfLK1cqe5nUg8ADpGct3iSS6JPIkp8lHhBV6e9PFAMd9u0gz2QlMILySCRV0fNcGLCIA==} + '@nuxtjs/i18n@10.2.0': + resolution: {integrity: sha512-noQTJICmiWLgi6QgF26n//IwBT0p4ntEV+CALhj+/4EFGEoBxl5/AEm1Ved6WSLBWHodrayMk3dRGVfQdRP2nQ==} engines: {node: '>=20.11.1'} - '@nuxtjs/mdc@0.18.0': - resolution: {integrity: sha512-/rWEOiLpD6oNx2FC/UsYxLn1pP31pvRmaX5y8GurBOogATKDWd3jlfKCGgshLnsWM6dCKgNkF0mCZQCMZMfpIQ==} + '@nuxtjs/mdc@0.18.3': + resolution: {integrity: sha512-Fl64a9OZBH3J7ZpqzSWkrS64oFmLLvledZMcnYH3UzVtgFPo/GaICdJN3Ml83NSs/J9At6HHaP0k3+nrxu2qJw==} - '@nuxtjs/mdc@0.18.2': - resolution: {integrity: sha512-pdeWd2/oOPriPVa1F6QNoK4fZCp/b4sxEVoouXJJCETCBIFSNS4OOtdRTY1ATLM1Gr+6ZvNyNPABvaaUEGC4Lw==} + '@nuxtjs/mdc@https://pkg.pr.new/@nuxtjs/mdc@cb6a227': + resolution: {tarball: https://pkg.pr.new/@nuxtjs/mdc@cb6a227} + version: 0.18.2 '@nuxtjs/robots@5.5.6': resolution: {integrity: sha512-PFp0sSaQs2ceEubvkiUPrWQ0GYTTu5bDH0lGVmJlm0h/Dqmt/e9TziXNKahL8HUV3VG22YzRyuyjd7p8+BaNgw==} @@ -1155,8 +1147,8 @@ packages: resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} - '@octokit/types@15.0.1': - resolution: {integrity: sha512-sdiirM93IYJ9ODDCBgmRPIboLbSkpLa5i+WLuXH8b8Atg+YMLAyLvDDhNWLV4OYd08tlvYfVm/dw88cqHWtw1Q==} + '@octokit/types@15.0.2': + resolution: {integrity: sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==} '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} @@ -1165,91 +1157,91 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@oxc-minify/binding-android-arm64@0.95.0': - resolution: {integrity: sha512-ck0NakTt3oBWTMQjxKf5ZW1GzCs0y1kETzJdh8h8NAWTutlMfeWiuUxCgG4FMF4XiTnCdLq/dFAKFcdbiwcoqg==} + '@oxc-minify/binding-android-arm64@0.96.0': + resolution: {integrity: sha512-lzeIEMu/v6Y+La5JSesq4hvyKtKBq84cgQpKYTYM/yGuNk2tfd5Ha31hnC+mTh48lp/5vZH+WBfjVUjjINCfug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-minify/binding-darwin-arm64@0.95.0': - resolution: {integrity: sha512-uvRkBVsh88DgMqddCIHcL1tKycKThfzLHNuBOm7csfpOD85TJimpl/1qAfrTCNrdaiteFK4U9QRKBdDvZay4RQ==} + '@oxc-minify/binding-darwin-arm64@0.96.0': + resolution: {integrity: sha512-i0LkJAUXb4BeBFrJQbMKQPoxf8+cFEffDyLSb7NEzzKuPcH8qrVsnEItoOzeAdYam8Sr6qCHVwmBNEQzl7PWpw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-minify/binding-darwin-x64@0.95.0': - resolution: {integrity: sha512-SpDArHPKy/K9rduOCdlqz4BxFZte5Ad4/CPNaP0EaVTNbDW1OjBMrVOzRxr/bveWUbUJW3gbWby//YzXCese/w==} + '@oxc-minify/binding-darwin-x64@0.96.0': + resolution: {integrity: sha512-C5vI0WPR+KPIFAD5LMOJk2J8iiT+Nv65vDXmemzXEXouzfEOLYNqnW+u6NSsccpuZHHWAiLyPFkYvKFduveAUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-minify/binding-freebsd-x64@0.95.0': - resolution: {integrity: sha512-U/ER7VsDCOv9HTE3rIZmNdN2ijZTT1vjDPPRsl9Z5Zyip2OsbHJxh4iNC00bO7qSw5keADuP4ooXsu2pjnfXNA==} + '@oxc-minify/binding-freebsd-x64@0.96.0': + resolution: {integrity: sha512-3//5DNx+xUjVBMLLk2sl6hfe4fwfENJtjVQUBXjxzwPuv8xgZUqASG4cRG3WqG5Qe8dV6SbCI4EgKQFjO4KCZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-minify/binding-linux-arm-gnueabihf@0.95.0': - resolution: {integrity: sha512-g+u5Zg72J7G9DbjnCIO6BhHE4lSaODLFjArFq9sZWu4xi4QOYapGdNZVbQWrWjzGlKTvYOhH621ySMOc07O64g==} + '@oxc-minify/binding-linux-arm-gnueabihf@0.96.0': + resolution: {integrity: sha512-WXChFKV7VdDk1NePDK1J31cpSvxACAVztJ7f7lJVYBTkH+iz5D0lCqPcE7a9eb7nC3xvz4yk7DM6dA9wlUQkQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm-musleabihf@0.95.0': - resolution: {integrity: sha512-RqQctWyvgSVkJ+UMhDPLDjSO+YjAWFGoSfvikgEIvGrTVjFzXz20EDFSH+CR9J+mXsuJOku63VKmcAZr8Vd/Qg==} + '@oxc-minify/binding-linux-arm-musleabihf@0.96.0': + resolution: {integrity: sha512-7B18glYMX4Z/YoqgE3VRLs/2YhVLxlxNKSgrtsRpuR8xv58xca+hEhiFwZN1Rn+NSMZ29Z33LWD7iYWnqYFvRA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-minify/binding-linux-arm64-gnu@0.95.0': - resolution: {integrity: sha512-psrzacTaa5zmRXm2Skooj5YOZvueFZLOjNDAkwQcjIgrVAzl7uXtDCPq8soM46O12wGXMpDNUkrbD2BVcF+S9g==} + '@oxc-minify/binding-linux-arm64-gnu@0.96.0': + resolution: {integrity: sha512-Yl+KcTldsEJNcaYxxonwAXZ2q3gxIzn3kXYQWgKWdaGIpNhOCWqF+KE5WLsldoh5Ro5SHtomvb8GM6cXrIBMog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-arm64-musl@0.95.0': - resolution: {integrity: sha512-W5VWcOTIxH8bvIviiFreNHK5RkaNE7Y7hm0fxYa9pAdDe8U2OnD77JPPHmNSKYROaDa1ZsmXK1dAOnwGcxvv1w==} + '@oxc-minify/binding-linux-arm64-musl@0.96.0': + resolution: {integrity: sha512-rNqoFWOWaxwMmUY5fspd/h5HfvgUlA3sv9CUdA2MpnHFiyoJNovR7WU8tGh+Yn0qOAs0SNH0a05gIthHig14IA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxc-minify/binding-linux-riscv64-gnu@0.95.0': - resolution: {integrity: sha512-FBAaIvTcRqdXDPZAsfEBc5nK3noZtEAO82090ne5EDsDNKu8u8sjLhXYJWM3AZFD6p7OPRqBby6N4pVicrk0dA==} + '@oxc-minify/binding-linux-riscv64-gnu@0.96.0': + resolution: {integrity: sha512-3paajIuzGnukHwSI3YBjYVqbd72pZd8NJxaayaNFR0AByIm8rmIT5RqFXbq8j2uhtpmNdZRXiu0em1zOmIScWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxc-minify/binding-linux-s390x-gnu@0.95.0': - resolution: {integrity: sha512-7/OWwUC3r0/nPsHOCsTkgitdjpvDOwm8f4lE/Xeigt+9EcRcVuaSHRVOHI47mQ/cSL6V3AObVcmiAGysR36vEw==} + '@oxc-minify/binding-linux-s390x-gnu@0.96.0': + resolution: {integrity: sha512-9ESrpkB2XG0lQ89JlsxlZa86iQCOs+jkDZLl6O+u5wb7ynUy21bpJJ1joauCOSYIOUlSy3+LbtJLiqi7oSQt5Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxc-minify/binding-linux-x64-gnu@0.95.0': - resolution: {integrity: sha512-3K2lxzk679ml1vXJtO8Nt3xMD2trnDQWBb4Q676Un5g3dbaYf1WgTmEI13ZnCrwE5uBI02DFtFQplkLFqb9dGA==} + '@oxc-minify/binding-linux-x64-gnu@0.96.0': + resolution: {integrity: sha512-UMM1jkns+p+WwwmdjC5giI3SfR2BCTga18x3C0cAu6vDVf4W37uTZeTtSIGmwatTBbgiq++Te24/DE0oCdm1iQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-linux-x64-musl@0.95.0': - resolution: {integrity: sha512-DrxQAALZs/He11OlCWZrJGsdwGSAK61nkZxcl3MnO33mL54Qs/vI9AbI2lMtggU+xB2sNKbjKTTpTbCPHOmhTA==} + '@oxc-minify/binding-linux-x64-musl@0.96.0': + resolution: {integrity: sha512-8b1naiC7MdP7xeMi7cQ5tb9W1rZAP9Qz/jBRqp1Y5EOZ1yhSGnf1QWuZ/0pCc+XiB9vEHXEY3Aki/H+86m2eOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxc-minify/binding-wasm32-wasi@0.95.0': - resolution: {integrity: sha512-PASXKqJyLHesNjTweXqkA3kG/hdjpauGb+REP5yZ4dr8gxu5DbMqk4QjsBmW3LjDF4tXXjRs8nHR6Qt2dhxTzA==} + '@oxc-minify/binding-wasm32-wasi@0.96.0': + resolution: {integrity: sha512-bjGDjkGzo3GWU9Vg2qiFUrfoo5QxojPNV/2RHTlbIB5FWkkV4ExVjsfyqihFiAuj0NXIZqd2SAiEq9htVd3RFw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-minify/binding-win32-arm64-msvc@0.95.0': - resolution: {integrity: sha512-fPVQZWObqqBRYedFy/bOI0UzUZCqq6ra/PBZFqi31c5Zn73ETTseLYL7ebQqKgjv8l9gQPBIAFIoXYsaoxT72A==} + '@oxc-minify/binding-win32-arm64-msvc@0.96.0': + resolution: {integrity: sha512-4L4DlHUT47qMWQuTyUghpncR3NZHWtxvd0G1KgSjVgXf+cXzFdWQCWZZtCU0yrmOoVCNUf4S04IFCJyAe+Ie7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-minify/binding-win32-x64-msvc@0.95.0': - resolution: {integrity: sha512-mtCkksnBcO4dIxuj1n9THbMihV+zjO7ZIVCPOq54pylA+hTb/OHau3OV+XyU0pnmREGTuF9xV3BUKag1SYS/lQ==} + '@oxc-minify/binding-win32-x64-msvc@0.96.0': + resolution: {integrity: sha512-T2ijfqZLpV2bgGGocXV4SXTuMoouqN0asYTIm+7jVOLvT5XgDogf3ZvCmiEnSWmxl21+r5wHcs8voU2iUROXAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1260,181 +1252,362 @@ packages: cpu: [arm64] os: [android] + '@oxc-parser/binding-android-arm64@0.96.0': + resolution: {integrity: sha512-CofbPOiW1PG+hi8bgElJPK0ioHfw8nt4Vw9d+Q9JuMhygS6LbQyu1W6tIFZ1OPFofeFRdWus3vD29FBx+tvFOA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxc-parser/binding-darwin-arm64@0.95.0': resolution: {integrity: sha512-zun9+V33kyCtNec9oUSWwb0qi3fB8pXwum1yGFECPEr55g/CrWju6/Jv4hwwNBeW2tK9Ch/PRstEtYmOLMhHpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@oxc-parser/binding-darwin-arm64@0.96.0': + resolution: {integrity: sha512-+HZ2L1a/1BsUXYik8XqQwT2Tl5Z3jRQ/RRQiPV9UsB2skKyd91NLDlQlMpdhjLGs9Qe7Y42unFjRg2iHjIiwnw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxc-parser/binding-darwin-x64@0.95.0': resolution: {integrity: sha512-9djMQ/t6Ns/UXtziwUe562uVJMbhtuLtCj+Xav+HMVT/rhV9gWO8PQOG7AwDLUBjJanItsrfqrGtqhNxtZ701w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@oxc-parser/binding-darwin-x64@0.96.0': + resolution: {integrity: sha512-GC8wH1W0XaCLyTeGsmyaMdnItiYQkqfTcn9Ygc55AWI+m11lCjQeoKDIsDCm/QwrKLCN07u3WWWsuPs5ubfXpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxc-parser/binding-freebsd-x64@0.95.0': resolution: {integrity: sha512-GK6k0PgCVkkeRZtHgcosCYbXIRySpJpuPw/OInfLGFh8f3x9gp2l8Fbcfx+YO+ZOHFBCd2NNedGqw8wMgouxfA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@oxc-parser/binding-freebsd-x64@0.96.0': + resolution: {integrity: sha512-8SeXi2FmlN15uPY5oM03cua5RXBDYmY34Uewongv6RUiAaU/kWxLvzuijpyNC+yQ1r4fC2LbWJhAsKpX5qkA6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxc-parser/binding-linux-arm-gnueabihf@0.95.0': resolution: {integrity: sha512-+g/lFITtyHHEk69cunOHuiT5cX+mpUTcbGYNe8suguZ7FqgNwai+PnGv0ctCvtgxBPVfckfUK8c3RvFKo+vi/w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-gnueabihf@0.96.0': + resolution: {integrity: sha512-UEs+Zf6T2/FwQlLgv7gfZsKmY19sl3hK57r2BQVc2eCmCmF/deeqDcWyFjzkNLgdDDucY60PoNhNGClDm605uQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.95.0': resolution: {integrity: sha512-SXNasDtPw8ycNV7VEvFxb4LETmykvWKUhHR7K3us818coXYpDj54P8WEx8hJobP/9skuuiFuKHmtYLdjX8wntA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.96.0': + resolution: {integrity: sha512-1kuWvjR2+ORJMoyxt9LSbLcDhXZnL25XOuv9VmH6NmSPvLgewzuubSlm++W03x+U7SzWFilBsdwIHtD/0mjERw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.95.0': resolution: {integrity: sha512-0LzebARTU0ROfD6pDK4h1pFn+09meErCZ0MA2TaW08G72+GNneEsksPufOuI+9AxVSRa+jKE3fu0wavvhZgSkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.96.0': + resolution: {integrity: sha512-PHH4ETR1t0fymxuhpQNj3Z9t/78/zZa2Lj3Z3I0ZOd+/Ex+gtdhGoB5xYyy7lcYGAPMfZ+Gmr+dTCr1GYNZ3BA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + '@oxc-parser/binding-linux-arm64-musl@0.95.0': resolution: {integrity: sha512-Pvi1lGe/G+mJZ3hUojMP/aAHAzHA25AEtVr8/iuz7UV72t/15NOgJYr9kELMUMNjPqpr3vKUgXTFmTtAxp11Qw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + '@oxc-parser/binding-linux-arm64-musl@0.96.0': + resolution: {integrity: sha512-fjDPbZjkqaDSTBe0FM8nZ9zBw4B/NF/I0gH7CfvNDwIj9smISaNFypYeomkvubORpnbX9ORhvhYwg3TxQ60OGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + '@oxc-parser/binding-linux-riscv64-gnu@0.95.0': resolution: {integrity: sha512-pUEVHIOVNDfhk4sTlLhn6mrNENhE4/dAwemxIfqpcSyBlYG0xYZND1F3jjR2yWY6DakXZ6VSuDbtiv1LPNlOLw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + '@oxc-parser/binding-linux-riscv64-gnu@0.96.0': + resolution: {integrity: sha512-59KAHd/6/LmjkdSAuJn0piKmwSavMasWNUKuYLX/UnqI5KkGIp14+LBwwaBG6KzOtIq1NrRCnmlL4XSEaNkzTg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + '@oxc-parser/binding-linux-s390x-gnu@0.95.0': resolution: {integrity: sha512-5+olaepHTE3J/+w7g0tr3nocvv5BKilAJnzj4L8tWBCLEZbL6olJcGVoldUO+3cgg1SO1xJywP5BuLhT0mDUDw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + '@oxc-parser/binding-linux-s390x-gnu@0.96.0': + resolution: {integrity: sha512-VtupojtgahY8XmLwpVpM3C1WQEgMD1JxpB8lzUtdSLwosWaaz1EAl+VXWNuxTTZusNuLBtmR+F0qql22ISi/9g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + '@oxc-parser/binding-linux-x64-gnu@0.95.0': resolution: {integrity: sha512-8huzHlK/N98wrnYKxIcYsK8ZGBWomQchu/Mzi6m+CtbhjWOv9DmK0jQ2fUWImtluQVpTwS0uZT06d3g7XIkJrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + '@oxc-parser/binding-linux-x64-gnu@0.96.0': + resolution: {integrity: sha512-8XSY9aUYY+5I4I1mhSEWmYqdUrJi3J5cCAInvEVHyTnDAPkhb+tnLGVZD696TpW+lFOLrTFF2V5GMWJVafqIUA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + '@oxc-parser/binding-linux-x64-musl@0.95.0': resolution: {integrity: sha512-bWnrLfGDcx/fab0+UQnFbVFbiykof/btImbYf+cI2pU/1Egb2x+OKSmM5Qt0nEUiIpM5fgJmYXxTopybSZOKYA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + '@oxc-parser/binding-linux-x64-musl@0.96.0': + resolution: {integrity: sha512-IIVNtqhA0uxKkD8Y6aZinKO/sOD5O62VlduE54FnUU2rzZEszrZQLL8nMGVZhTdPaKW5M1aeLmjcdnOs6er1Jg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + '@oxc-parser/binding-wasm32-wasi@0.95.0': resolution: {integrity: sha512-0JLyqkZu1HnQIZ4e5LBGOtzqua1QwFEUOoMSycdoerXqayd4LK2b7WMfAx8eCIf+jGm1Uj6f3R00nlsx8g1faQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@oxc-parser/binding-wasm32-wasi@0.96.0': + resolution: {integrity: sha512-TJ/sNPbVD4u6kUwm7sDKa5iRDEB8vd7ZIMjYqFrrAo9US1RGYOSvt6Ie9sDRekUL9fZhNsykvSrpmIj6dg/C2w==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@oxc-parser/binding-win32-arm64-msvc@0.95.0': resolution: {integrity: sha512-RWvaA6s1SYlBj9CxwHfNn0CRlkPdv9fEUAXfZkGQPdP5e1ppIaO2KYE0sUov/zzp9hPTMMsTMHl4dcIbb+pHCQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@oxc-parser/binding-win32-arm64-msvc@0.96.0': + resolution: {integrity: sha512-zCOhRB7MYVIHLj+2QYoTuLyaipiD8JG/ggUjfsMUaupRPpvwQNhsxINLIcTcb0AS+OsT7/OREhydjO74STqQzQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.95.0': resolution: {integrity: sha512-BQpgl7rDjFvCIHudmUR0dCwc4ylBYZl4CPVinlD3NhkMif4WD5dADckoo5ES/KOpFyvwcbKZX+grP63cjHi26g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.96.0': + resolution: {integrity: sha512-J6zfx9TE0oS+TrqBUjMVMOi/d/j3HMj69Pip263pETOEPm788N0HXKPsc2X2jUfSTHzD9vmdjq0QFymbf2LhWg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.95.0': resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} + '@oxc-project/types@0.96.0': + resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} + '@oxc-transform/binding-android-arm64@0.95.0': resolution: {integrity: sha512-eW+BCgRWOsMrDiz7FEV7BjAmaF9lGIc2ueGdRUYjRUMq4f5FSGS7gMBTYDxajdoIB3L5Gnksh1CWkIlgg95UVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] + '@oxc-transform/binding-android-arm64@0.96.0': + resolution: {integrity: sha512-wOm+ZsqFvyZ7B9RefUMsj0zcXw77Z2pXA51nbSQyPXqr+g0/pDGxriZWP8Sdpz/e4AEaKPA9DvrwyOZxu7GRDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxc-transform/binding-darwin-arm64@0.95.0': resolution: {integrity: sha512-OUUaYZVss8tyDZZ7TGr2vnH3+i3Ouwsx0frQRGkiePNatXxaJJ3NS5+Kwgi9hh3WryXaQz2hWji4AM2RHYE7Cg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@oxc-transform/binding-darwin-arm64@0.96.0': + resolution: {integrity: sha512-td1sbcvzsyuoNRiNdIRodPXRtFFwxzPpC/6/yIUtRRhKn30XQcizxupIvQQVpJWWchxkphbBDh6UN+u+2CJ8Zw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxc-transform/binding-darwin-x64@0.95.0': resolution: {integrity: sha512-49UPEgIlgWUndwcP3LH6dvmOewZ92DxCMpFMo11JhUlmNJxA3sjVImEBRB56/tJ+XF+xnya9kB1oCW4yRY+mRw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@oxc-transform/binding-darwin-x64@0.96.0': + resolution: {integrity: sha512-xgqxnqhPYH2NYkgbqtnCJfhbXvxIf/pnhF/ig5UBK8PYpCEWIP/cfLpQRQ9DcQnRfuxi7RMIF6LdmB1AiS6Fkg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxc-transform/binding-freebsd-x64@0.95.0': resolution: {integrity: sha512-lNKrHKaDEm8pbKlVbn0rv2L97O0lbA0Tsrxx4GF/HhmdW+NgwGU1pMzZ4tB2QcylbqgKxOB+v9luebHyh1jfgA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@oxc-transform/binding-freebsd-x64@0.96.0': + resolution: {integrity: sha512-1i67OXdl/rvSkcTXqDlh6qGRXYseEmf0rl/R+/i88scZ/o3A+FzlX56sThuaPzSSv9eVgesnoYUjIBJELFc1oA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxc-transform/binding-linux-arm-gnueabihf@0.95.0': resolution: {integrity: sha512-+VWcLeeizI8IjU+V+o8AmzPuIMiTrGr0vrmXU3CEsV05MrywCuJU+f6ilPs3JBKno9VIwqvRpHB/z39sQabHWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-transform/binding-linux-arm-gnueabihf@0.96.0': + resolution: {integrity: sha512-9MJBs0SWODsqyzO3eAnacXgJ/sZu1xqinjEwBzkcZ3tQI8nKhMADOzu2NzbVWDWujeoC8DESXaO08tujvUru+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-transform/binding-linux-arm-musleabihf@0.95.0': resolution: {integrity: sha512-a59xPw84t6VwlvNEGcmuw3feGcKcWOC7uB8oePJ/BVSAV1yayLoB3k6JASwLTZ7N/PNPNUhcw1jDxowgAfBJfg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-transform/binding-linux-arm-musleabihf@0.96.0': + resolution: {integrity: sha512-BQom57I2ScccixljNYh2Wy+5oVZtF1LXiiUPxSLtDHbsanpEvV/+kzCagQpTjk1BVzSQzOxfEUWjvL7mY53pRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-transform/binding-linux-arm64-gnu@0.95.0': resolution: {integrity: sha512-NLdrFuEHlmbiC1M1WESFV4luUcB/84GXi+cbnRXhgMjIW/CThRVJ989eTJy59QivkVlLcJSKTiKiKCt0O6TTlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + '@oxc-transform/binding-linux-arm64-gnu@0.96.0': + resolution: {integrity: sha512-kaqvUzNu8LL4aBSXqcqGVLFG13GmJEplRI2+yqzkgAItxoP/LfFMdEIErlTWLGyBwd0OLiNMHrOvkcCQRWadVg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + '@oxc-transform/binding-linux-arm64-musl@0.95.0': resolution: {integrity: sha512-GL0ffCPW8JlFI0/jeSgCY665yDdojHxA0pbYG+k8oEHOWCYZUZK9AXL+r0oerNEWYJ8CRB+L5Yq87ZtU/YUitw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + '@oxc-transform/binding-linux-arm64-musl@0.96.0': + resolution: {integrity: sha512-EiG/L3wEkPgTm4p906ufptyblBgtiQWTubGg/JEw82f8uLRroayr5zhbUqx40EgH037a3SfJthIyLZi7XPRFJw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + '@oxc-transform/binding-linux-riscv64-gnu@0.95.0': resolution: {integrity: sha512-tbH7LaClSmN3YFVo1UjMSe7D6gkb5f+CMIbj9i873UUZomVRmAjC4ygioObfzM+sj/tX0WoTXx5L1YOfQkHL6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + '@oxc-transform/binding-linux-riscv64-gnu@0.96.0': + resolution: {integrity: sha512-r01CY6OxKGtVeYnvH4mGmtkQMlLkXdPWWNXwo5o7fE2s/fgZPMpqh8bAuXEhuMXipZRJrjxTk1+ZQ4KCHpMn3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + '@oxc-transform/binding-linux-s390x-gnu@0.95.0': resolution: {integrity: sha512-8jMqiURWa0iTiPMg7BWaln89VdhhWzNlPyKM90NaFVVhBIKCr2UEhrQWdpBw/E9C8uWf/4VabBEhfPMK+0yS4w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + '@oxc-transform/binding-linux-s390x-gnu@0.96.0': + resolution: {integrity: sha512-4djg2vYLGbVeS8YiA2K4RPPpZE4fxTGCX5g/bOMbCYyirDbmBAIop4eOAj8vOA9i1CcWbDtmp+PVJ1dSw7f3IQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + '@oxc-transform/binding-linux-x64-gnu@0.95.0': resolution: {integrity: sha512-D5ULJ2uWipsTgfvHIvqmnGkCtB3Fyt2ZN7APRjVO+wLr+HtmnaWddKsLdrRWX/m/6nQ2xQdoQekdJrokYK9LtQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + '@oxc-transform/binding-linux-x64-gnu@0.96.0': + resolution: {integrity: sha512-f6pcWVz57Y8jXa2OS7cz3aRNuks34Q3j61+3nQ4xTE8H1KbalcEvHNmM92OEddaJ8QLs9YcE0kUC6eDTbY34+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + '@oxc-transform/binding-linux-x64-musl@0.95.0': resolution: {integrity: sha512-DmCGU+FzRezES5wVAGVimZGzYIjMOapXbWpxuz8M8p3nMrfdBEQ5/tpwBp2vRlIohhABy4vhHJByl4c64ENCGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + '@oxc-transform/binding-linux-x64-musl@0.96.0': + resolution: {integrity: sha512-NSiRtFvR7Pbhv3mWyPMkTK38czIjcnK0+K5STo3CuzZRVbX1TM17zGdHzKBUHZu7v6IQ6/XsQ3ELa1BlEHPGWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + '@oxc-transform/binding-wasm32-wasi@0.95.0': resolution: {integrity: sha512-tSo1EU4Whd1gXyae7cwSDouhppkuz6Jkd5LY8Uch9VKsHVSRhDLDW19Mq6VSwtyPxDPTJnJ2jYJWm+n8SYXiXQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@oxc-transform/binding-wasm32-wasi@0.96.0': + resolution: {integrity: sha512-A91ARLiuZHGN4hBds9s7bW3czUuLuHLsV+cz44iF9j8e1zX9m2hNGXf/acQRbg/zcFUXmjz5nmk8EkZyob876w==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@oxc-transform/binding-win32-arm64-msvc@0.95.0': resolution: {integrity: sha512-6eaxlgj+J5n8zgJTSugqdPLBtKGRqvxYLcvHN8b+U9hVhF/2HG/JCOrcSYV/XgWGNPQiaRVzpR3hGhmFro9QTw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@oxc-transform/binding-win32-arm64-msvc@0.96.0': + resolution: {integrity: sha512-IedJf40djKgDObomhYjdRAlmSYUEdfqX3A3M9KfUltl9AghTBBLkTzUMA7O09oo71vYf5TEhbFM7+Vn5vqw7AQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxc-transform/binding-win32-x64-msvc@0.95.0': resolution: {integrity: sha512-Y8JY79A7fTuBjEXZFu+mHbHzgsV3uJDUuUKeGffpOwI1ayOGCKeBJTiMhksYkiir1xS+DkGLEz73+xse9Is9rw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@oxc-transform/binding-win32-x64-msvc@0.96.0': + resolution: {integrity: sha512-0fI0P0W7bSO/GCP/N5dkmtB9vBqCA4ggo1WmXTnxNJVmFFOtcA1vYm1I9jl8fxo+sucW2WnlpnI4fjKdo3JKxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -1537,8 +1710,8 @@ packages: '@poppinss/colors@4.1.5': resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} - '@poppinss/dumper@0.6.4': - resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} '@poppinss/exception@1.2.2': resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} @@ -1632,8 +1805,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} - '@rolldown/pluginutils@1.0.0-beta.45': - resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} + '@rolldown/pluginutils@1.0.0-beta.50': + resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -1680,8 +1853,8 @@ packages: rollup: optional: true - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1716,113 +1889,113 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + '@rollup/rollup-android-arm-eabi@4.53.2': + resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + '@rollup/rollup-android-arm64@4.53.2': + resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + '@rollup/rollup-darwin-arm64@4.53.2': + resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + '@rollup/rollup-darwin-x64@4.53.2': + resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + '@rollup/rollup-freebsd-arm64@4.53.2': + resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + '@rollup/rollup-freebsd-x64@4.53.2': + resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + '@rollup/rollup-linux-arm-musleabihf@4.53.2': + resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + '@rollup/rollup-linux-arm64-gnu@4.53.2': + resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + '@rollup/rollup-linux-arm64-musl@4.53.2': + resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + '@rollup/rollup-linux-loong64-gnu@4.53.2': + resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.2': + resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + '@rollup/rollup-linux-riscv64-gnu@4.53.2': + resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + '@rollup/rollup-linux-riscv64-musl@4.53.2': + resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + '@rollup/rollup-linux-s390x-gnu@4.53.2': + resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + '@rollup/rollup-linux-x64-gnu@4.53.2': + resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + '@rollup/rollup-linux-x64-musl@4.53.2': + resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + '@rollup/rollup-openharmony-arm64@4.53.2': + resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + '@rollup/rollup-win32-arm64-msvc@4.53.2': + resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + '@rollup/rollup-win32-ia32-msvc@4.53.2': + resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + '@rollup/rollup-win32-x64-gnu@4.53.2': + resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + '@rollup/rollup-win32-x64-msvc@4.53.2': + resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} cpu: [x64] os: [win32] @@ -1859,26 +2032,26 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@3.14.0': - resolution: {integrity: sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==} + '@shikijs/core@3.15.0': + resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} - '@shikijs/engine-javascript@3.14.0': - resolution: {integrity: sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==} + '@shikijs/engine-javascript@3.15.0': + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} - '@shikijs/engine-oniguruma@3.14.0': - resolution: {integrity: sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==} + '@shikijs/engine-oniguruma@3.15.0': + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} - '@shikijs/langs@3.14.0': - resolution: {integrity: sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==} + '@shikijs/langs@3.15.0': + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} - '@shikijs/themes@3.14.0': - resolution: {integrity: sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==} + '@shikijs/themes@3.15.0': + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} - '@shikijs/transformers@3.14.0': - resolution: {integrity: sha512-i67zQnY9wLMMnKasonVW1L9fKneSLZDj1ePsA4o0AZWU4uUobmJY9baRDa36z+a9/g0aG76/2tybQvm4hrwxIQ==} + '@shikijs/transformers@3.15.0': + resolution: {integrity: sha512-Hmwip5ovvSkg+Kc41JTvSHHVfCYF+C8Cp1omb5AJj4Xvd+y9IXz2rKJwmFRGsuN0vpHxywcXJ1+Y4B9S7EG1/A==} - '@shikijs/types@3.14.0': - resolution: {integrity: sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==} + '@shikijs/types@3.15.0': + resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1896,8 +2069,8 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sindresorhus/is@7.1.0': - resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} + '@sindresorhus/is@7.1.1': + resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==} engines: {node: '>=18'} '@sindresorhus/merge-streams@4.0.0': @@ -1907,8 +2080,8 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@speed-highlight/core@1.2.8': - resolution: {integrity: sha512-IGytNtnUnPIobIbOq5Y6LIlqiHNX+vnToQIS7lj6L5819C+rA8TXRDkkG8vePsiBOGcoW9R6i+dp2YBUKdB09Q==} + '@speed-highlight/core@1.2.12': + resolution: {integrity: sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==} '@sqlite.org/sqlite-wasm@3.50.4-build1': resolution: {integrity: sha512-Qig2Wso7gPkU1PtXwFzndh+CTRzrIFxVGqv6eCetjU7YqxlHItj+GvQYwYTppCRgAPawtRN/4AJcEgB9xDHGug==} @@ -1926,65 +2099,65 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@tailwindcss/node@4.1.16': - resolution: {integrity: sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==} + '@tailwindcss/node@4.1.17': + resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} - '@tailwindcss/oxide-android-arm64@4.1.16': - resolution: {integrity: sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==} + '@tailwindcss/oxide-android-arm64@4.1.17': + resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.16': - resolution: {integrity: sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==} + '@tailwindcss/oxide-darwin-arm64@4.1.17': + resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.16': - resolution: {integrity: sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==} + '@tailwindcss/oxide-darwin-x64@4.1.17': + resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.16': - resolution: {integrity: sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==} + '@tailwindcss/oxide-freebsd-x64@4.1.17': + resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': - resolution: {integrity: sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': - resolution: {integrity: sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.16': - resolution: {integrity: sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.16': - resolution: {integrity: sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.16': - resolution: {integrity: sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==} + '@tailwindcss/oxide-linux-x64-musl@4.1.17': + resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.16': - resolution: {integrity: sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==} + '@tailwindcss/oxide-wasm32-wasi@4.1.17': + resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -1995,32 +2168,32 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': - resolution: {integrity: sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.16': - resolution: {integrity: sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.16': - resolution: {integrity: sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==} + '@tailwindcss/oxide@4.1.17': + resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.1.16': - resolution: {integrity: sha512-Qn3SFGPXYQMKR/UtqS+dqvPrzEeBZHrFA92maT4zijCVggdsXnDBMsPFJo1eArX3J+O+Gi+8pV4PkqjLCNBk3A==} + '@tailwindcss/postcss@4.1.17': + resolution: {integrity: sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==} '@tailwindcss/typography@0.5.19': resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/vite@4.1.16': - resolution: {integrity: sha512-bbguNBcDxsRmi9nnlWJxhfDWamY3lmcyACHcdO1crxfzuLpOhHLLtEIN/nCbbAtj5rchUgQD17QVAKi1f7IsKg==} + '@tailwindcss/vite@4.1.17': + resolution: {integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 @@ -2085,8 +2258,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.9.1': - resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2113,63 +2286,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.46.2': - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + '@typescript-eslint/eslint-plugin@8.46.4': + resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.2 + '@typescript-eslint/parser': ^8.46.4 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.2': - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + '@typescript-eslint/parser@8.46.4': + resolution: {integrity: sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.2': - resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + '@typescript-eslint/project-service@8.46.4': + resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.2': - resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + '@typescript-eslint/scope-manager@8.46.4': + resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.2': - resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + '@typescript-eslint/tsconfig-utils@8.46.4': + resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.2': - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + '@typescript-eslint/type-utils@8.46.4': + resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + '@typescript-eslint/types@8.46.4': + resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.2': - resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + '@typescript-eslint/typescript-estree@8.46.4': + resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.2': - resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + '@typescript-eslint/utils@8.46.4': + resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.2': - resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + '@typescript-eslint/visitor-keys@8.46.4': + resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2180,20 +2353,20 @@ packages: peerDependencies: vue: '>=3.5.18' - '@unocss/core@66.5.4': - resolution: {integrity: sha512-UDS2CRgyQCEFH+5kStDyJd7OFtgkIUZYn5Ahr5z7v3jc/pEfeOJ0mxsNAr+FgMS/xb17vy4sVFvx3jj/FwMZ1A==} + '@unocss/core@66.5.6': + resolution: {integrity: sha512-9hmpPXLi41YFTPexi7cT57PRWCgwtGLa1QHlPvRgx2kqjYicy7zEDylIY2ObwQien75VCDOcGpmQ/5XdZ473Rg==} - '@unocss/extractor-arbitrary-variants@66.5.4': - resolution: {integrity: sha512-JsgITF11Z2WdXzF8eO2/qkcFIff/dEEc9C2eKYOSUv5pe+RMZxXHoAw4x+D4n0UrGAbHpoUVaJ8E7kG0ayTbGw==} + '@unocss/extractor-arbitrary-variants@66.5.6': + resolution: {integrity: sha512-QAzpkX5UPjTeRbA7eed+mVPGNkwnMrIgfmlV9l8GVXHJCEnroRkzDVOPv1G9bKw1T82+NjBeZT9VnbZOmpLXQA==} - '@unocss/preset-mini@66.5.4': - resolution: {integrity: sha512-KaBGsw3+Pi5ZTsp5u0OrUUUXFVltHin02cYhv3A4b9392Kej5R3y7zIf1VjiQ3ZXR4KZWfv0CQj0LBqIqAJ5WA==} + '@unocss/preset-mini@66.5.6': + resolution: {integrity: sha512-HNCqsGlaKl572eu+lfVpLjid7aRIasxCm8qry8Dr1gGjG2XMx9uf+N3KRFsqlW5RU4WGtfvFaqmT+/KDIM7g0w==} - '@unocss/preset-wind3@66.5.4': - resolution: {integrity: sha512-cqQGg9E2476YVpnX3sgO/jEoA4cKCA5rEl2NgemoAJpKAgdM68JPB+Tve4LlSLssxRQZ7ZYNO6hOfW8R2gVVuw==} + '@unocss/preset-wind3@66.5.6': + resolution: {integrity: sha512-KmZUNDo7BwF6kQyjp3m6255edMbU9tsWShwxqj/ZTRGSYXe2Ewce5d7YKSFlJOrDNnsPkwFCIGgxawlAw//vLw==} - '@unocss/rule-utils@66.5.4': - resolution: {integrity: sha512-LFzLuXQfZKI/qJBrsqkaVKlw0ECU8Xw7m+MaKIKyFH/hqggzkvNG0PyWU2HnPNzz1dIiVBn+Epfpz8pzi+MLFA==} + '@unocss/rule-utils@66.5.6': + resolution: {integrity: sha512-HzFlKDIaX/yPnNx7rn24Yi23RkVqwGiE1n9qVNJnEUZTE9IHx32P7eLfIUKOLU58tcMVslsLZDnt/DpJCs6RCw==} engines: {node: '>=14'} '@unpic/core@1.0.2': @@ -2383,17 +2556,17 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.22': - resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} + '@vue/compiler-core@3.5.24': + resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} - '@vue/compiler-dom@3.5.22': - resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} + '@vue/compiler-dom@3.5.24': + resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} - '@vue/compiler-sfc@3.5.22': - resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} + '@vue/compiler-sfc@3.5.24': + resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} - '@vue/compiler-ssr@3.5.22': - resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + '@vue/compiler-ssr@3.5.24': + resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -2401,16 +2574,16 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/devtools-core@7.7.7': - resolution: {integrity: sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==} + '@vue/devtools-core@8.0.3': + resolution: {integrity: sha512-gCEQN7aMmeaigEWJQ2Z2o3g7/CMqGTPvNS1U3n/kzpLoAZ1hkAHNgi4ml/POn/9uqGILBk65GGOUdrraHXRj5Q==} peerDependencies: vue: ^3.0.0 - '@vue/devtools-kit@7.7.7': - resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} + '@vue/devtools-kit@8.0.3': + resolution: {integrity: sha512-UF4YUOVGdfzXLCv5pMg2DxocB8dvXz278fpgEE+nJ/DRALQGAva7sj9ton0VWZ9hmXw+SV8yKMrxP2MpMhq9Wg==} - '@vue/devtools-shared@7.7.7': - resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} + '@vue/devtools-shared@8.0.3': + resolution: {integrity: sha512-s/QNll7TlpbADFZrPVsaUNPCOF8NvQgtgmmB7Tip6pLf/HcOvBTly0lfLQ0Eylu9FQ4OqBhFpLyBgwykiSf8zw==} '@vue/language-core@2.2.0': resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} @@ -2420,14 +2593,6 @@ packages: typescript: optional: true - '@vue/language-core@3.1.2': - resolution: {integrity: sha512-PyFDCqpdfYUT+oMLqcc61oHfJlC6yjhybaefwQjRdkchIihToOEpJ2Wu/Ebq2yrnJdd1EsaAvZaXVAqcxtnDxQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@vue/language-core@3.1.3': resolution: {integrity: sha512-KpR1F/eGAG9D1RZ0/T6zWJs6dh/pRLfY5WupecyYKJ1fjVmDMgTPw9wXmKv2rBjo4zCJiOSiyB8BDP1OUwpMEA==} peerDependencies: @@ -2436,22 +2601,22 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.22': - resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} + '@vue/reactivity@3.5.24': + resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} - '@vue/runtime-core@3.5.22': - resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==} + '@vue/runtime-core@3.5.24': + resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} - '@vue/runtime-dom@3.5.22': - resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==} + '@vue/runtime-dom@3.5.24': + resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} - '@vue/server-renderer@3.5.22': - resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==} + '@vue/server-renderer@3.5.24': + resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} peerDependencies: - vue: 3.5.22 + vue: 3.5.24 - '@vue/shared@3.5.22': - resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + '@vue/shared@3.5.24': + resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} @@ -2559,8 +2724,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ai@5.0.81: - resolution: {integrity: sha512-SB7oMC9QSpIu1VLswFTZuhhpfQfrGtFBUbWLtHBkhjWZIQskjtcdEhB+N4yO9hscdc2wYtjw/tacgoxX93QWFw==} + ai@5.0.92: + resolution: {integrity: sha512-EnPe3QXiD06Tg7iAt/oU3JSwedI1nuhEBnTjyfn1qTXaqmJ6qI4YG8wn/eBHRVXnmljDFDNYvGBC5pALYV1rAA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -2593,8 +2758,8 @@ packages: alien-signals@0.4.14: resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} - alien-signals@3.0.3: - resolution: {integrity: sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==} + alien-signals@3.1.0: + resolution: {integrity: sha512-yufC6VpSy8tK3I0lO67pjumo5JvDQVQyr38+3OHqe6CHl1t2VZekKZ7EKKZSqk0cRmE7U7tfZbpXiKNzuc+ckg==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -2649,8 +2814,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@2.1.3: - resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} engines: {node: '>=20.19.0'} ast-types@0.13.4: @@ -2670,8 +2835,8 @@ packages: async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.22: + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2691,16 +2856,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.1: - resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: bare-abort-controller: optional: true - bare-fs@4.5.0: - resolution: {integrity: sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==} + bare-fs@4.5.1: + resolution: {integrity: sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2726,8 +2891,8 @@ packages: bare-events: optional: true - bare-url@2.3.1: - resolution: {integrity: sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==} + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} base64-js@0.0.8: resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} @@ -2736,8 +2901,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.20: - resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} + baseline-browser-mapping@2.8.26: + resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} hasBin: true basic-ftp@5.0.5: @@ -2754,8 +2919,8 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@2.6.1: - resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + birpc@2.8.0: + resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2779,8 +2944,8 @@ packages: brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2813,6 +2978,14 @@ packages: magicast: optional: true + c12@3.3.2: + resolution: {integrity: sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2827,8 +3000,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001754: + resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2914,10 +3087,6 @@ packages: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} - clipboardy@5.0.0: - resolution: {integrity: sha512-MQfKHaD09eP80Pev4qBxZLbxJK/ONnqfSYAPlCmPh+7BDboYtO/3BmB6HGzxDIT0SlTRc2tzS8lQqfcdLtZ0Kg==} - engines: {node: '>=20'} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -3077,14 +3246,13 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} - copy-anything@4.0.5: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} + copy-paste@2.2.0: + resolution: {integrity: sha512-jqSL4r9DSeiIvJZStLzY/sMLt9ToTM7RsK237lYOTG+KcbQJHGala3R1TUpa8h1p9adswVgIdV4qGbseVhL4lg==} + core-js-compat@3.46.0: resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} @@ -3164,8 +3332,8 @@ packages: cssfilter@0.0.10: resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - cssnano-preset-default@7.0.9: - resolution: {integrity: sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==} + cssnano-preset-default@7.0.10: + resolution: {integrity: sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -3176,8 +3344,8 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.1.1: - resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} + cssnano@7.1.2: + resolution: {integrity: sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -3263,8 +3431,8 @@ packages: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.3.0: + resolution: {integrity: sha512-Qq68+VkJlc8tjnPV1i7HtbIn7ohmjZa88qUvHMIK0ZKUXMCuV45cT7cEXALPUmeXCe0q1DWQkQTemHVaLIFSrg==} engines: {node: '>=18'} define-lazy-prop@2.0.0: @@ -3366,8 +3534,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.241: - resolution: {integrity: sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==} + electron-to-chromium@1.5.250: + resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} embla-carousel-auto-height@8.6.0: resolution: {integrity: sha512-/HrJQOEM6aol/oF33gd2QlINcXy3e19fJWvHDuHWp2bpyTa+2dm9tVVJak30m2Qy6QyQ6Fc8DkImtv7pxWOJUQ==} @@ -3464,8 +3632,8 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -3538,8 +3706,8 @@ packages: eslint-import-resolver-node: optional: true - eslint-plugin-jsdoc@61.1.12: - resolution: {integrity: sha512-CGJTnltz7ovwOW33xYhvA4fMuriPZpR5OnJf09SV28iU2IUpJwMd6P7zvUK8Sl56u5YzO+1F9m46wpSs2dufEw==} + eslint-plugin-jsdoc@61.2.0: + resolution: {integrity: sha512-Pky3YKWPOcDGi4TzBZlp/ENd+z443uVgIyZxzA9wVbfECjG1ptf7sB8gzSX4Z8dAtoD8d3d68jsLuAfxr+8qyQ==} engines: {node: '>=20.11.0'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -3672,8 +3840,8 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -3763,8 +3931,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} framer-motion@12.23.12: resolution: {integrity: sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==} @@ -3883,8 +4051,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} globby@15.0.0: @@ -4025,6 +4193,10 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} @@ -4097,8 +4269,8 @@ packages: resolution: {integrity: sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==} engines: {node: '>=12.22.0'} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ipx@2.1.1: @@ -4211,10 +4383,6 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - is-wayland@0.1.0: - resolution: {integrity: sha512-QkbMsWkIfkrzOPxenwye0h56iAXirZYHG9eHVPb22fO9y+wPbaX/CHacOWBa/I++4ohTcByimhM1/nyCsH8KNA==} - engines: {node: '>=20'} - is-what@5.5.0: resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} engines: {node: '>=18'} @@ -4513,11 +4681,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - magicast@0.5.0: - resolution: {integrity: sha512-D0cxqnb8DpO66P4LkD9ME6a4AhRK6A+xprXksD5vtsJN6G4zbzdI10vDaWCIyj3eLwjNZrQxUYB20FDhKrMEKQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -4706,6 +4871,10 @@ packages: resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -4796,6 +4965,10 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4841,8 +5014,8 @@ packages: xml2js: optional: true - node-abi@3.78.0: - resolution: {integrity: sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==} + node-abi@3.80.0: + resolution: {integrity: sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==} engines: {node: '>=10'} node-addon-api@6.1.0: @@ -4878,8 +5051,8 @@ packages: node-mock-http@1.0.3: resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} - node-releases@2.0.26: - resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -4935,8 +5108,8 @@ packages: peerDependencies: h3: ^1 - nuxt@4.2.0: - resolution: {integrity: sha512-4qzf2Ymf07dMMj50TZdNZgMqCdzDch8NY3NO2ClucUaIvvsr6wd9+JrDpI1CckSTHwqU37/dIPFpvIQZoeHoYA==} + nuxt@4.2.1: + resolution: {integrity: sha512-OE5ONizgwkKhjTGlUYB3ksE+2q2/I30QIYFl3N1yYz1r2rwhunGA3puUvqkzXwgLQ3AdsNcigPDmyQsqjbSdoQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4956,9 +5129,6 @@ packages: object-deep-merge@2.0.0: resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} - ofetch@1.5.0: - resolution: {integrity: sha512-A7llJ7eZyziA5xq9//3ZurA8OhFqtS99K5/V1sLBJ5j137CM/OAjlbA/TEJXBuOWwOfLqih+oH5U3ran4za1FQ==} - ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -5010,18 +5180,26 @@ packages: resolution: {integrity: sha512-zBd1G8HkewNd2A8oQ8c6BN/f/c9EId7rSUueOLGu28govmUctXmM+3765GwsByv9nYUdrLqHphXlYIc86saYsg==} engines: {node: '>=18'} - oxc-minify@0.95.0: - resolution: {integrity: sha512-3k//447vscNk5JZXVnr2qv0QONjUU7F8Y6ewAPFVQNgdvYh3gCLYCRjQ/DR5kVkqxFgVa8R/FFBV3X5jlztSzw==} + oxc-minify@0.96.0: + resolution: {integrity: sha512-dXeeGrfPJJ4rMdw+NrqiCRtbzVX2ogq//R0Xns08zql2HjV3Zi2SBJ65saqfDaJzd2bcHqvGWH+M44EQCHPAcA==} engines: {node: ^20.19.0 || >=22.12.0} oxc-parser@0.95.0: resolution: {integrity: sha512-Te8fE/SmiiKWIrwBwxz5Dod87uYvsbcZ9JAL5ylPg1DevyKgTkxCXnPEaewk1Su2qpfNmry5RHoN+NywWFCG+A==} engines: {node: ^20.19.0 || >=22.12.0} + oxc-parser@0.96.0: + resolution: {integrity: sha512-ucs6niJ5mZlYP3oTl4AK2eD2m7WLoSaljswnSFVYWrXzme5PtM97S7Ve1Tjx+/TKjanmEZuSt1f1qYi6SZvntw==} + engines: {node: ^20.19.0 || >=22.12.0} + oxc-transform@0.95.0: resolution: {integrity: sha512-SmS5aThb5K0SoUZgzGbikNBjrGHfOY4X5TEqBlaZb1uy5YgXbUSbpakpZJ13yW36LNqy8Im5+y+sIk5dlzpZ/w==} engines: {node: ^20.19.0 || >=22.12.0} + oxc-transform@0.96.0: + resolution: {integrity: sha512-dQPNIF+gHpSkmC0+Vg9IktNyhcn28Y8R3eTLyzn52UNymkasLicl3sFAtz7oEVuFmCpgGjaUTKkwk+jW2cHpDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + oxc-walker@0.5.2: resolution: {integrity: sha512-XYoZqWwApSKUmSDEFeOKdy3Cdh95cOcSU8f7yskFWE4Rl3cfL5uwyY+EV7Brk9mdNLy+t5SseJajd6g7KncvlA==} peerDependencies: @@ -5129,9 +5307,6 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - perfect-debounce@2.0.0: resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} @@ -5167,20 +5342,20 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.4: - resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==} + postcss-colormin@7.0.5: + resolution: {integrity: sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-convert-values@7.0.7: - resolution: {integrity: sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==} + postcss-convert-values@7.0.8: + resolution: {integrity: sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 - postcss-discard-comments@7.0.4: - resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} + postcss-discard-comments@7.0.5: + resolution: {integrity: sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5209,8 +5384,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-merge-rules@7.0.6: - resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==} + postcss-merge-rules@7.0.7: + resolution: {integrity: sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5227,8 +5402,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-minify-params@7.0.4: - resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==} + postcss-minify-params@7.0.5: + resolution: {integrity: sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5281,8 +5456,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-normalize-unicode@7.0.4: - resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==} + postcss-normalize-unicode@7.0.5: + resolution: {integrity: sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5305,8 +5480,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-reduce-initial@7.0.4: - resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==} + postcss-reduce-initial@7.0.5: + resolution: {integrity: sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5602,8 +5777,8 @@ packages: rollup: optional: true - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + rollup@4.53.2: + resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5637,8 +5812,8 @@ packages: resolution: {integrity: sha512-vu/49vdc8MzV5jUchs3TIRDCOkOvMc1iJ11MrZvhg9tE4ziKIEIBjBZvies6a9sfM2vQ2gc3dXeu6rCK7AztHA==} engines: {node: '>=16'} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} @@ -5703,8 +5878,8 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@3.14.0: - resolution: {integrity: sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==} + shiki@3.15.0: + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -5719,8 +5894,8 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-git@3.28.0: - resolution: {integrity: sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==} + simple-git@3.30.0: + resolution: {integrity: sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg==} simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} @@ -5812,8 +5987,8 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - srvx@0.8.16: - resolution: {integrity: sha512-hmcGW4CgroeSmzgF1Ihwgl+Ths0JqAJ7HwjP2X7e3JzY7u4IydLMcdnlqGQiQGUswz+PO9oh/KtCpOISIvs9QQ==} + srvx@0.9.6: + resolution: {integrity: sha512-5L4rT6qQqqb+xcoDoklUgCNdmzqJ6vbcDRwPVGRXewF55IJH0pqh0lQlrJ266ZWTKJ4mfeioqHQJeAYesS+RrQ==} engines: {node: '>=20.16.0'} hasBin: true @@ -5907,8 +6082,8 @@ packages: structured-clone-es@1.0.0: resolution: {integrity: sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==} - stylehacks@7.0.6: - resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==} + stylehacks@7.0.7: + resolution: {integrity: sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -5956,8 +6131,8 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tailwind-merge@3.3.1: - resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + tailwind-merge@3.4.0: + resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} tailwind-variants@3.1.1: resolution: {integrity: sha512-ftLXe3krnqkMHsuBTEmaVUXYovXtPyTK7ckEfDRXS8PBZx0bAUas+A0jYxuKA5b8qg++wvQ3d2MQ7l/xeZxbZQ==} @@ -5969,8 +6144,8 @@ packages: tailwind-merge: optional: true - tailwindcss@4.1.16: - resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==} + tailwindcss@4.1.17: + resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -5989,12 +6164,12 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.5.1: - resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} + tar@7.5.2: + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -6013,8 +6188,9 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -6098,8 +6274,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.1.0: - resolution: {integrity: sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==} + type-fest@5.2.0: + resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} engines: {node: '>=20'} type-level-regexp@0.1.17: @@ -6151,12 +6327,8 @@ packages: resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} engines: {node: '>=18.17'} - undici@7.16.0: - resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} - engines: {node: '>=20.18.1'} - - unenv@2.0.0-rc.23: - resolution: {integrity: sha512-NeOb/HbW2OwOzYaV21MewVQYfzlSwG0kVUB74RyV0gEIP44M5DsYTK9e7jDcekB/3YU+pfNWniZj+r4M/aejyQ==} + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} unhead@2.0.19: resolution: {integrity: sha512-gEEjkV11Aj+rBnY6wnRfsFtF2RxKOLaPN4i+Gx3UhBxnszvV6ApSNZbGk7WKyy/lErQ6ekPN63qdFL7sa1leow==} @@ -6217,8 +6389,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unpic@4.1.3: - resolution: {integrity: sha512-ZXxitZC81D+szUorVQAKaaGchZjUhI6vUyHVVLaHToai9iToNIjoeg6XDUpd/0VthFIRyHbEe7XcxF4L933yQw==} + unpic@4.2.2: + resolution: {integrity: sha512-z6T2ScMgRV2y2H8MwwhY5xHZWXhUx/YxtOCGJwfURSl7ypVy4HpLIMWoIZKnnxQa/RKzM0kg8hUh0paIrpLfvw==} unplugin-auto-import@20.2.0: resolution: {integrity: sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==} @@ -6253,8 +6425,8 @@ packages: '@nuxt/kit': optional: true - unplugin-vue-router@0.16.0: - resolution: {integrity: sha512-yFmUQoN07KABkbxMSaNvfjnflwSi3nkSVKi7v6FTwXlzXyRDSx63vQ8Se4ho0T9Ao9I8U5FJB12fzmrGxFB0CA==} + unplugin-vue-router@0.16.1: + resolution: {integrity: sha512-7A7gUVzLIYMBrBPKk8l4lZoZXDOrO8+etw6/RTrqG3OzpLUUZEXJFUW7+OyMIpQK93sEbdkR2z9ZNNl/r32FMw==} peerDependencies: '@vue/compiler-sfc': ^3.5.17 vue-router: ^4.6.0 @@ -6331,6 +6503,68 @@ packages: uploadthing: optional: true + unstorage@1.17.2: + resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 || ^7.0.0 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true @@ -6345,6 +6579,9 @@ packages: unwasm@0.4.2: resolution: {integrity: sha512-/DWXXXn63zAbdoQ6jtdbhr1WP2Cz6ax2nwIu4/yqj4617VWmva4UAzNH16q2fD4I6fym4tSAXFT8P89weXn2AA==} + unwasm@0.5.0: + resolution: {integrity: sha512-6pGyUVJuqGRyyWc0JHbbjXwalBlc/9lEqfuE5j56L4V/MXhdBLRtbX7ciazT+EnzOVV+j++qnxJRTkjna+LgcQ==} + update-browserslist-db@1.1.4: resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true @@ -6397,6 +6634,11 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite-node@5.0.0: + resolution: {integrity: sha512-nJINVH7lHBKoyDFYnwrXbNUrmTJ2ssBHTd/mXVZfLq/O5K7ksv4CayQOA5KkbOSrsgSQg8antcVPgQmzBWWn/w==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite-plugin-checker@0.11.0: resolution: {integrity: sha512-iUdO9Pl9UIBRPAragwi3as/BXXTtRu4G12L3CMrjx+WVTd9g/MsqNakreib9M/2YRVkhZYiTEwdH2j4Dm0w7lw==} engines: {node: '>=16.11'} @@ -6458,14 +6700,14 @@ packages: peerDependencies: vite: '*' - vite-plugin-vue-tracer@1.0.1: - resolution: {integrity: sha512-L5/vAhT6oYbH4RSQYGLN9VfHexWe7SGzca1pJ7oPkL6KtxWA1jbGeb3Ri1JptKzqtd42HinOq4uEYqzhVWrzig==} + vite-plugin-vue-tracer@1.1.3: + resolution: {integrity: sha512-fM7hfHELZvbPnSn8EKZwHfzxm5EfYFQIclz8rwcNXfodNbRkwNvh0AGMtaBfMxQ9HC5KVa3KitwHnmE4ezDemw==} peerDependencies: vite: ^6.0.0 || ^7.0.0 vue: ^3.5.0 - vite@7.2.0: - resolution: {integrity: sha512-C/Naxf8H0pBx1PA4BdpT+c/5wdqI9ILMdwjSMILw7tVIh3JsxzZqdeTLmmdaoh5MYUEOyBnM9K3o0DzoZ/fe+w==} + vite@7.2.2: + resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -6538,13 +6780,13 @@ packages: vue-bundle-renderer@2.2.0: resolution: {integrity: sha512-sz/0WEdYH1KfaOm0XaBmRZOWgYTEvUDt6yPYaUzl4E52qzgWLlknaPPTTZmp6benaPTlQAI/hN1x3tAzZygycg==} - vue-component-meta@3.1.2: - resolution: {integrity: sha512-LpQiZuTrkKOpiQAMVMrFQ4MFnxCZX4qA/sbMR2zJL/2P2c2e1sc75bfvluuEKO44PviMNE396qZRWxXTqwB9aA==} + vue-component-meta@3.1.3: + resolution: {integrity: sha512-Rtaa1L5Vu9iQEnL0t7rkhebuUGOWQavAeFl8DS3IGQZUndJoQnW+k4+eLZUnCwjiCA4DV8KKSlLKptbpHxLOGw==} peerDependencies: typescript: '*' - vue-component-type-helpers@3.1.2: - resolution: {integrity: sha512-ch3/SKBtxdZq18vsEntiGCdSszCRNfhX5QaTxjSacCAXLlNQRXfXo+ANjoQEYJMsJOJy1/vHF6Tkc4s85MS+zw==} + vue-component-type-helpers@3.1.3: + resolution: {integrity: sha512-V1dOD8XYfstOKCnXbWyEJIrhTBMwSyNjv271L1Jlx9ExpNlCSuqOs3OdWrGJ0V544zXufKbcYabi/o+gK8lyfQ==} vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} @@ -6591,8 +6833,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.22: - resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} + vue@3.5.24: + resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -6749,8 +6991,8 @@ packages: youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - youch@4.1.0-beta.11: - resolution: {integrity: sha512-sQi6PERyO/mT8w564ojOVeAlYTtVQmC2GaktQAf+IdI75/GKIggosBuvyVXvEV+FATAT6RbLdIjFoiIId4ozoQ==} + youch@4.1.0-beta.12: + resolution: {integrity: sha512-X+AQ2EdigcZb2h1XQmBMm19TrrfKXxEXWpnf8ThbARwiiSf/pA7MvRTCj5VHCI9z3vjJBsDeqWWyvaI9Bfp9Pg==} zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} @@ -6772,14 +7014,14 @@ packages: snapshots: - '@ai-sdk/gateway@2.0.2(zod@4.1.12)': + '@ai-sdk/gateway@2.0.8(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.13(zod@4.1.12) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) '@vercel/oidc': 3.0.3 zod: 4.1.12 - '@ai-sdk/provider-utils@3.0.13(zod@4.1.12)': + '@ai-sdk/provider-utils@3.0.17(zod@4.1.12)': dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 @@ -6790,13 +7032,13 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/vue@2.0.81(vue@3.5.22(typescript@5.9.3))(zod@4.1.12)': + '@ai-sdk/vue@2.0.92(vue@3.5.24(typescript@5.9.3))(zod@4.1.12)': dependencies: - '@ai-sdk/provider-utils': 3.0.13(zod@4.1.12) - ai: 5.0.81(zod@4.1.12) - swrv: 1.1.0(vue@3.5.22(typescript@5.9.3)) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) + ai: 5.0.92(zod@4.1.12) + swrv: 1.1.0(vue@3.5.24(typescript@5.9.3)) optionalDependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) zod: 4.1.12 '@alloc/quick-lru@5.2.0': {} @@ -6804,7 +7046,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.5.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 '@antfu/utils@9.3.0': {} @@ -6858,7 +7100,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -6981,7 +7223,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@capsizecss/metrics@3.5.0': {} + '@capsizecss/metrics@3.6.1': {} '@capsizecss/unpack@2.4.0': dependencies: @@ -7014,35 +7256,25 @@ snapshots: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 - '@dxup/nuxt@0.2.0(magicast@0.3.5)': - dependencies: - '@dxup/unimport': 0.1.0 - '@nuxt/kit': 4.2.0(magicast@0.3.5) - chokidar: 4.0.3 - pathe: 2.0.3 - tinyglobby: 0.2.15 - transitivePeerDependencies: - - magicast - - '@dxup/nuxt@0.2.0(magicast@0.5.0)': + '@dxup/nuxt@0.2.1(magicast@0.5.1)': dependencies: - '@dxup/unimport': 0.1.0 - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@dxup/unimport': 0.1.1 + '@nuxt/kit': 4.2.1(magicast@0.5.1) chokidar: 4.0.3 pathe: 2.0.3 tinyglobby: 0.2.15 transitivePeerDependencies: - magicast - '@dxup/unimport@0.1.0': {} + '@dxup/unimport@0.1.1': {} - '@emnapi/core@1.6.0': + '@emnapi/core@1.7.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.6.0': + '@emnapi/runtime@1.7.0': dependencies: tslib: 2.8.1 optional: true @@ -7055,89 +7287,89 @@ snapshots: '@es-joy/jsdoccomment@0.76.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.4 comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 6.10.0 '@es-joy/resolve.exports@1.2.0': {} - '@esbuild/aix-ppc64@0.25.11': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.11': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.11': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.11': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.11': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.11': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.11': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.11': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.11': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.11': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.11': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.11': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.11': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.11': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.11': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.11': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.11': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.11': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.11': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.11': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.11': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.11': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.11': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.11': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.11': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.11': + '@esbuild/win32-x64@0.25.12': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': @@ -7147,9 +7379,9 @@ snapshots: '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.4.0(eslint@9.39.1(jiti@2.6.1))': + '@eslint/compat@1.4.1(eslint@9.39.1(jiti@2.6.1))': dependencies: - '@eslint/core': 0.16.0 + '@eslint/core': 0.17.0 optionalDependencies: eslint: 9.39.1(jiti@2.6.1) @@ -7165,10 +7397,6 @@ snapshots: dependencies: '@eslint/core': 0.17.0 - '@eslint/core@0.16.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 @@ -7187,17 +7415,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} - '@eslint/js@9.39.1': {} '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.4.0': - dependencies: - '@eslint/core': 0.16.0 - levn: 0.4.1 - '@eslint/plugin-kit@0.4.1': dependencies: '@eslint/core': 0.17.0 @@ -7221,11 +7442,11 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@floating-ui/vue@1.1.9(vue@3.5.22(typescript@5.9.3))': + '@floating-ui/vue@1.1.9(vue@3.5.24(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.4 '@floating-ui/utils': 0.2.10 - vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -7243,19 +7464,11 @@ snapshots: '@hutson/parse-repository-url@5.0.0': {} - '@iconify-json/lucide@1.2.71': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/lucide@1.2.72': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/simple-icons@1.2.56': + '@iconify-json/lucide@1.2.73': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.57': + '@iconify-json/simple-icons@1.2.58': dependencies: '@iconify/types': 2.0.0 @@ -7263,7 +7476,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/collections@1.0.612': + '@iconify/collections@1.0.617': dependencies: '@iconify/types': 2.0.0 @@ -7282,135 +7495,135 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/vue@5.0.0(vue@3.5.22(typescript@5.9.3))': + '@iconify/vue@5.0.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@iconify/types': 2.0.0 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@inquirer/ansi@1.0.1': {} + '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.0(@types/node@24.9.1)': + '@inquirer/checkbox@4.3.1(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/confirm@5.1.19(@types/node@24.9.1)': + '@inquirer/confirm@5.1.20(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/core@10.3.0(@types/node@24.9.1)': + '@inquirer/core@10.3.1(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.1) cli-width: 4.1.0 - mute-stream: 2.0.0 + mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/editor@4.2.21(@types/node@24.9.1)': + '@inquirer/editor@4.2.22(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/external-editor': 1.0.2(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/expand@4.0.21(@types/node@24.9.1)': + '@inquirer/expand@4.0.22(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/external-editor@1.0.2(@types/node@24.9.1)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/figures@1.0.14': {} + '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.2.5(@types/node@24.9.1)': + '@inquirer/input@4.3.0(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/number@3.0.21(@types/node@24.9.1)': + '@inquirer/number@3.0.22(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/password@4.0.21(@types/node@24.9.1)': + '@inquirer/password@4.0.22(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 - - '@inquirer/prompts@7.9.0(@types/node@24.9.1)': - dependencies: - '@inquirer/checkbox': 4.3.0(@types/node@24.9.1) - '@inquirer/confirm': 5.1.19(@types/node@24.9.1) - '@inquirer/editor': 4.2.21(@types/node@24.9.1) - '@inquirer/expand': 4.0.21(@types/node@24.9.1) - '@inquirer/input': 4.2.5(@types/node@24.9.1) - '@inquirer/number': 3.0.21(@types/node@24.9.1) - '@inquirer/password': 4.0.21(@types/node@24.9.1) - '@inquirer/rawlist': 4.1.9(@types/node@24.9.1) - '@inquirer/search': 3.2.0(@types/node@24.9.1) - '@inquirer/select': 4.4.0(@types/node@24.9.1) + '@types/node': 24.10.1 + + '@inquirer/prompts@7.10.0(@types/node@24.10.1)': + dependencies: + '@inquirer/checkbox': 4.3.1(@types/node@24.10.1) + '@inquirer/confirm': 5.1.20(@types/node@24.10.1) + '@inquirer/editor': 4.2.22(@types/node@24.10.1) + '@inquirer/expand': 4.0.22(@types/node@24.10.1) + '@inquirer/input': 4.3.0(@types/node@24.10.1) + '@inquirer/number': 3.0.22(@types/node@24.10.1) + '@inquirer/password': 4.0.22(@types/node@24.10.1) + '@inquirer/rawlist': 4.1.10(@types/node@24.10.1) + '@inquirer/search': 3.2.1(@types/node@24.10.1) + '@inquirer/select': 4.4.1(@types/node@24.10.1) optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/rawlist@4.1.9(@types/node@24.9.1)': + '@inquirer/rawlist@4.1.10(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/search@3.2.0(@types/node@24.9.1)': + '@inquirer/search@3.2.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/select@4.4.0(@types/node@24.9.1)': + '@inquirer/select@4.4.1(@types/node@24.10.1)': dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@inquirer/type@3.0.9(@types/node@24.9.1)': + '@inquirer/type@3.0.10(@types/node@24.10.1)': optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 '@internationalized/date@3.10.0': dependencies: @@ -7420,19 +7633,19 @@ snapshots: dependencies: '@swc/helpers': 0.5.17 - '@intlify/bundle-utils@11.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.1(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.1.12 '@intlify/shared': 11.1.12 acorn: 8.15.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 2.4.1 source-map-js: 1.2.1 yaml-eslint-parser: 1.3.0 optionalDependencies: - vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3)) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) '@intlify/core-base@11.1.12': dependencies: @@ -7444,7 +7657,7 @@ snapshots: '@intlify/core-base': 11.1.12 '@intlify/shared': 11.1.12 - '@intlify/h3@0.7.1': + '@intlify/h3@0.7.4': dependencies: '@intlify/core': 11.1.12 '@intlify/utils': 0.13.0 @@ -7456,23 +7669,23 @@ snapshots: '@intlify/shared@11.1.12': {} - '@intlify/unplugin-vue-i18n@11.0.1(@vue/compiler-dom@3.5.22)(eslint@9.39.1(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.1(@vue/compiler-dom@3.5.24)(eslint@9.39.1(jiti@2.6.1))(rollup@4.53.2)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@intlify/bundle-utils': 11.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3))) + '@intlify/bundle-utils': 11.0.1(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3))) '@intlify/shared': 11.1.12 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.24)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) debug: 4.4.3 fast-glob: 3.3.3 pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.10 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3)) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -7482,14 +7695,14 @@ snapshots: '@intlify/utils@0.13.0': {} - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.24)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))': dependencies: '@babel/parser': 7.28.5 optionalDependencies: '@intlify/shared': 11.1.12 - '@vue/compiler-dom': 3.5.22 - vue: 3.5.22(typescript@5.9.3) - vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.24 + vue: 3.5.24(typescript@5.9.3) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) '@ioredis/commands@1.4.0': {} @@ -7554,28 +7767,29 @@ snapshots: node-fetch: 2.7.0 nopt: 8.1.0 semver: 7.7.3 - tar: 7.5.1 + tar: 7.5.2 transitivePeerDependencies: - encoding - supports-color - '@microsoft/api-extractor-model@7.31.3(@types/node@24.9.1)': + '@microsoft/api-extractor-model@7.32.0(@types/node@24.10.1)': dependencies: - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.18.0(@types/node@24.9.1) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.0 + '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.53.3(@types/node@24.9.1)': + '@microsoft/api-extractor@7.55.0(@types/node@24.10.1)': dependencies: - '@microsoft/api-extractor-model': 7.31.3(@types/node@24.9.1) - '@microsoft/tsdoc': 0.15.1 - '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.18.0(@types/node@24.9.1) + '@microsoft/api-extractor-model': 7.32.0(@types/node@24.10.1) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.0 + '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) '@rushstack/rig-package': 0.6.0 - '@rushstack/terminal': 0.19.3(@types/node@24.9.1) - '@rushstack/ts-command-line': 5.1.3(@types/node@24.9.1) + '@rushstack/terminal': 0.19.3(@types/node@24.10.1) + '@rushstack/ts-command-line': 5.1.3(@types/node@24.10.1) + diff: 8.0.2 lodash: 4.17.21 minimatch: 10.0.3 resolve: 1.22.11 @@ -7585,32 +7799,32 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/tsdoc-config@0.17.1': + '@microsoft/tsdoc-config@0.18.0': dependencies: - '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc': 0.16.0 ajv: 8.12.0 jju: 1.4.0 resolve: 1.22.11 - '@microsoft/tsdoc@0.15.1': {} + '@microsoft/tsdoc@0.16.0': {} - '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.52.5)': + '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) json5: 2.2.3 - rollup: 4.52.5 + rollup: 4.53.2 '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.6.0 - '@emnapi/runtime': 1.6.0 + '@emnapi/core': 1.7.0 + '@emnapi/runtime': 1.7.0 '@tybys/wasm-util': 0.10.1 optional: true '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.6.0 - '@emnapi/runtime': 1.6.0 + '@emnapi/core': 1.7.0 + '@emnapi/runtime': 1.7.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -7630,19 +7844,17 @@ snapshots: dependencies: lodash: 4.17.21 - '@nuxt/cli@3.29.3(magicast@0.3.5)': + '@nuxt/cli@3.30.0(magicast@0.5.1)': dependencies: - c12: 3.3.1(magicast@0.3.5) + c12: 3.3.2(magicast@0.5.1) citty: 0.1.6 - clipboardy: 5.0.0 confbox: 0.2.2 consola: 3.4.2 + copy-paste: 2.2.0 defu: 6.1.4 - exsolve: 1.0.7 + exsolve: 1.0.8 fuse.js: 7.1.0 - get-port-please: 3.2.0 giget: 2.0.0 - h3: 1.15.4 jiti: 2.6.1 listhen: 1.9.0 nypm: 0.6.2 @@ -7653,56 +7865,23 @@ snapshots: pkg-types: 2.3.0 scule: 1.3.0 semver: 7.7.3 - srvx: 0.8.16 + srvx: 0.9.6 std-env: 3.10.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 ufo: 1.6.1 - undici: 7.16.0 - youch: 4.1.0-beta.11 + youch: 4.1.0-beta.12 transitivePeerDependencies: - magicast - '@nuxt/cli@3.29.3(magicast@0.5.0)': + '@nuxt/content@3.8.0(better-sqlite3@12.4.1)(magicast@0.5.1)': dependencies: - c12: 3.3.1(magicast@0.5.0) - citty: 0.1.6 - clipboardy: 5.0.0 - confbox: 0.2.2 - consola: 3.4.2 - defu: 6.1.4 - exsolve: 1.0.7 - fuse.js: 7.1.0 - get-port-please: 3.2.0 - giget: 2.0.0 - h3: 1.15.4 - jiti: 2.6.1 - listhen: 1.9.0 - nypm: 0.6.2 - ofetch: 1.5.1 - ohash: 2.0.11 - pathe: 2.0.3 - perfect-debounce: 2.0.0 - pkg-types: 2.3.0 - scule: 1.3.0 - semver: 7.7.3 - srvx: 0.8.16 - std-env: 3.10.0 - tinyexec: 1.0.1 - ufo: 1.6.1 - undici: 7.16.0 - youch: 4.1.0-beta.11 - transitivePeerDependencies: - - magicast - - '@nuxt/content@3.8.0(better-sqlite3@12.4.1)(magicast@0.3.5)': - dependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@nuxtjs/mdc': 0.18.0(magicast@0.3.5) - '@shikijs/langs': 3.14.0 + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@nuxtjs/mdc': https://pkg.pr.new/@nuxtjs/mdc@cb6a227(magicast@0.5.1) + '@shikijs/langs': 3.15.0 '@sqlite.org/sqlite-wasm': 3.50.4-build1 '@standard-schema/spec': 1.0.0 '@webcontainer/env': 1.1.1 - c12: 3.3.1(magicast@0.3.5) + c12: 3.3.2(magicast@0.5.1) chokidar: 4.0.3 consola: 3.4.2 db0: 0.3.4(better-sqlite3@12.4.1) @@ -7722,76 +7901,16 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 micromatch: 4.0.8 minimark: 0.2.0 - minimatch: 10.0.3 + minimatch: 10.1.1 modern-tar: 0.6.1 - nuxt-component-meta: https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.3.5) + nuxt-component-meta: https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.5.1) nypm: 0.6.2 ohash: 2.0.11 pathe: 2.0.3 pkg-types: 2.3.0 remark-mdc: 3.8.1 scule: 1.3.0 - shiki: 3.14.0 - slugify: 1.6.6 - socket.io-client: 4.8.1 - std-env: 3.10.0 - tinyglobby: 0.2.15 - ufo: 1.6.1 - unctx: 2.4.1 - unified: 11.0.5 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - unplugin: 2.3.10 - zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) - optionalDependencies: - better-sqlite3: 12.4.1 - transitivePeerDependencies: - - bufferutil - - drizzle-orm - - magicast - - mysql2 - - supports-color - - utf-8-validate - - '@nuxt/content@3.8.0(better-sqlite3@12.4.1)(magicast@0.5.0)': - dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@nuxtjs/mdc': 0.18.0(magicast@0.5.0) - '@shikijs/langs': 3.14.0 - '@sqlite.org/sqlite-wasm': 3.50.4-build1 - '@standard-schema/spec': 1.0.0 - '@webcontainer/env': 1.1.1 - c12: 3.3.1(magicast@0.5.0) - chokidar: 4.0.3 - consola: 3.4.2 - db0: 0.3.4(better-sqlite3@12.4.1) - defu: 6.1.4 - destr: 2.0.5 - git-url-parse: 16.1.0 - hookable: 5.5.3 - jiti: 2.6.1 - json-schema-to-typescript: 15.0.4 - knitwork: 1.2.0 - mdast-util-to-hast: 13.2.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromatch: 4.0.8 - minimark: 0.2.0 - minimatch: 10.0.3 - modern-tar: 0.6.1 - nuxt-component-meta: https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.5.0) - nypm: 0.6.2 - ohash: 2.0.11 - pathe: 2.0.3 - pkg-types: 2.3.0 - remark-mdc: 3.8.1 - scule: 1.3.0 - shiki: 3.14.0 + shiki: 3.15.0 slugify: 1.6.6 socket.io-client: 4.8.1 std-env: 3.10.0 @@ -7816,41 +7935,41 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@2.7.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))': + '@nuxt/devtools-kit@2.7.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: - '@nuxt/kit': 3.20.0(magicast@0.3.5) + '@nuxt/kit': 3.20.1(magicast@0.5.1) execa: 8.0.1 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - magicast - '@nuxt/devtools-kit@2.7.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(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)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: - '@nuxt/kit': 3.20.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) execa: 8.0.1 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - magicast - '@nuxt/devtools-wizard@2.7.0': + '@nuxt/devtools-wizard@3.1.0': dependencies: consola: 3.4.2 diff: 8.0.2 execa: 8.0.1 - magicast: 0.3.5 + magicast: 0.5.1 pathe: 2.0.3 pkg-types: 2.3.0 prompts: 2.4.2 semver: 7.7.3 - '@nuxt/devtools@2.7.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@nuxt/devtools@3.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@nuxt/devtools-kit': 2.7.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/devtools-wizard': 2.7.0 - '@nuxt/kit': 3.20.0(magicast@0.3.5) - '@vue/devtools-core': 7.7.7(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@vue/devtools-kit': 7.7.7 - birpc: 2.6.1 + '@nuxt/devtools-kit': 3.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vue/devtools-kit': 8.0.3 + birpc: 2.8.0 consola: 3.4.2 destr: 2.0.5 error-stack-parser-es: 1.0.5 @@ -7862,20 +7981,20 @@ snapshots: is-installed-globally: 1.0.0 launch-editor: 2.12.0 local-pkg: 1.1.2 - magicast: 0.3.5 + magicast: 0.5.1 nypm: 0.6.2 ohash: 2.0.11 pathe: 2.0.3 - perfect-debounce: 1.0.0 + perfect-debounce: 2.0.0 pkg-types: 2.3.0 semver: 7.7.3 - simple-git: 3.28.0 + simple-git: 3.30.0 sirv: 3.0.2 structured-clone-es: 1.0.0 tinyglobby: 0.2.15 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-plugin-inspect: 11.3.3(@nuxt/kit@3.20.0(magicast@0.3.5))(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - vite-plugin-vue-tracer: 1.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.2.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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)(lightningcss@1.30.2)(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: @@ -7884,27 +8003,27 @@ snapshots: - utf-8-validate - vue - '@nuxt/eslint-config@1.10.0(@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.22)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@nuxt/eslint-config@1.10.0(@typescript-eslint/utils@8.46.4(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)': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 - '@eslint/js': 9.38.0 + '@eslint/js': 9.39.1 '@nuxt/eslint-plugin': 1.10.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) eslint-config-flat-gitignore: 2.1.0(eslint@9.39.1(jiti@2.6.1)) eslint-flat-config-utils: 2.1.4 eslint-merge-processors: 2.0.0(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import-lite: 0.3.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-jsdoc: 61.1.12(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)) + eslint-plugin-jsdoc: 61.2.0(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-regexp: 2.10.0(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-unicorn: 62.0.0(eslint@9.39.1(jiti@2.6.1)) - eslint-plugin-vue: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.22)(eslint@9.39.1(jiti@2.6.1)) - globals: 16.4.0 + eslint-plugin-vue: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1)) + globals: 16.5.0 local-pkg: 1.1.2 pathe: 2.0.3 vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@2.6.1)) @@ -7917,21 +8036,21 @@ snapshots: '@nuxt/eslint-plugin@1.10.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript - '@nuxt/fonts@0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))': + '@nuxt/fonts@0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: - '@nuxt/devtools-kit': 2.7.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/kit': 3.20.0(magicast@0.3.5) + '@nuxt/devtools-kit': 2.7.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + '@nuxt/kit': 3.20.1(magicast@0.5.1) consola: 3.4.2 css-tree: 3.1.0 defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 fontaine: 0.6.0 h3: 1.15.4 jiti: 2.6.1 @@ -7970,60 +8089,14 @@ snapshots: - uploadthing - vite - '@nuxt/fonts@0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))': + '@nuxt/icon@2.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@nuxt/devtools-kit': 2.7.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/kit': 3.20.0(magicast@0.5.0) - consola: 3.4.2 - css-tree: 3.1.0 - defu: 6.1.4 - esbuild: 0.25.11 - fontaine: 0.6.0 - h3: 1.15.4 - jiti: 2.6.1 - magic-regexp: 0.10.0 - magic-string: 0.30.21 - node-fetch-native: 1.6.7 - ohash: 2.0.11 - pathe: 2.0.3 - sirv: 3.0.2 - tinyglobby: 0.2.15 - ufo: 1.6.1 - unifont: 0.4.1 - unplugin: 2.3.10 - unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - encoding - - idb-keyval - - ioredis - - magicast - - uploadthing - - vite - - '@nuxt/icon@2.1.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': - dependencies: - '@iconify/collections': 1.0.612 + '@iconify/collections': 1.0.617 '@iconify/types': 2.0.0 '@iconify/utils': 3.0.2 - '@iconify/vue': 5.0.0(vue@3.5.22(typescript@5.9.3)) - '@nuxt/devtools-kit': 2.7.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/kit': 4.2.0(magicast@0.3.5) + '@iconify/vue': 5.0.0(vue@3.5.24(typescript@5.9.3)) + '@nuxt/devtools-kit': 2.7.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + '@nuxt/kit': 4.2.1(magicast@0.5.1) consola: 3.4.2 local-pkg: 1.1.2 mlly: 1.8.0 @@ -8038,31 +8111,9 @@ snapshots: - vite - vue - '@nuxt/icon@2.1.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@nuxt/image@1.11.0(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)': dependencies: - '@iconify/collections': 1.0.612 - '@iconify/types': 2.0.0 - '@iconify/utils': 3.0.2 - '@iconify/vue': 5.0.0(vue@3.5.22(typescript@5.9.3)) - '@nuxt/devtools-kit': 2.7.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/kit': 4.2.0(magicast@0.5.0) - consola: 3.4.2 - local-pkg: 1.1.2 - mlly: 1.8.0 - ohash: 2.0.11 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 - tinyglobby: 0.2.15 - transitivePeerDependencies: - - magicast - - supports-color - - vite - - vue - - '@nuxt/image@1.11.0(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)': - dependencies: - '@nuxt/kit': 3.20.0(magicast@0.5.0) + '@nuxt/kit': 3.20.1(magicast@0.5.1) consola: 3.4.2 defu: 6.1.4 h3: 1.15.4 @@ -8099,14 +8150,14 @@ snapshots: - react-native-b4a - uploadthing - '@nuxt/kit@3.20.0(magicast@0.3.5)': + '@nuxt/kit@3.20.1(magicast@0.5.1)': dependencies: - c12: 3.3.1(magicast@0.3.5) + c12: 3.3.2(magicast@0.5.1) consola: 3.4.2 defu: 6.1.4 destr: 2.0.5 errx: 0.1.0 - exsolve: 1.0.7 + exsolve: 1.0.8 ignore: 7.0.5 jiti: 2.6.1 klona: 2.0.6 @@ -8125,65 +8176,14 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/kit@3.20.0(magicast@0.5.0)': - dependencies: - c12: 3.3.1(magicast@0.5.0) - consola: 3.4.2 - defu: 6.1.4 - destr: 2.0.5 - errx: 0.1.0 - exsolve: 1.0.7 - ignore: 7.0.5 - jiti: 2.6.1 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.8.0 - ohash: 2.0.11 - pathe: 2.0.3 - pkg-types: 2.3.0 - rc9: 2.1.2 - scule: 1.3.0 - semver: 7.7.3 - tinyglobby: 0.2.15 - ufo: 1.6.1 - unctx: 2.4.1 - untyped: 2.0.0 - transitivePeerDependencies: - - magicast - - '@nuxt/kit@4.2.0(magicast@0.3.5)': - dependencies: - c12: 3.3.1(magicast@0.3.5) - consola: 3.4.2 - defu: 6.1.4 - destr: 2.0.5 - errx: 0.1.0 - exsolve: 1.0.7 - ignore: 7.0.5 - jiti: 2.6.1 - klona: 2.0.6 - mlly: 1.8.0 - ohash: 2.0.11 - pathe: 2.0.3 - pkg-types: 2.3.0 - rc9: 2.1.2 - scule: 1.3.0 - semver: 7.7.3 - tinyglobby: 0.2.15 - ufo: 1.6.1 - unctx: 2.4.1 - untyped: 2.0.0 - transitivePeerDependencies: - - magicast - - '@nuxt/kit@4.2.0(magicast@0.5.0)': + '@nuxt/kit@4.2.1(magicast@0.5.1)': dependencies: - c12: 3.3.1(magicast@0.5.0) + c12: 3.3.2(magicast@0.5.1) consola: 3.4.2 defu: 6.1.4 destr: 2.0.5 errx: 0.1.0 - exsolve: 1.0.7 + exsolve: 1.0.8 ignore: 7.0.5 jiti: 2.6.1 klona: 2.0.6 @@ -8201,22 +8201,22 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/module-builder@1.0.2(@nuxt/cli@3.29.3(magicast@0.3.5))(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3))': + '@nuxt/module-builder@1.0.2(@nuxt/cli@3.30.0)(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@nuxt/cli': 3.29.3(magicast@0.3.5) + '@nuxt/cli': 3.30.0(magicast@0.5.1) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 jiti: 2.6.1 magic-regexp: 0.10.0 - mkdist: 2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)) + mkdist: 2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 tsconfck: 3.1.6(typescript@5.9.3) typescript: 5.9.3 - unbuild: 3.6.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)) - vue-sfc-transformer: 0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)) + unbuild: 3.6.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) + vue-sfc-transformer: 0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-core' - esbuild @@ -8224,33 +8224,33 @@ snapshots: - vue - vue-tsc - '@nuxt/nitro-server@4.2.0(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(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))(idb-keyval@6.2.2)(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(typescript@5.9.3)': dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vue/shared': 3.5.22 + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@unhead/vue': 2.0.19(vue@3.5.24(typescript@5.9.3)) + '@vue/shared': 3.5.24 consola: 3.4.2 defu: 6.1.4 destr: 2.0.5 devalue: 5.4.2 errx: 0.1.0 escape-string-regexp: 5.0.0 - exsolve: 1.0.7 + exsolve: 1.0.8 h3: 1.15.4 impound: 1.0.0 klona: 2.0.6 mocked-exports: 0.1.1 nitropack: 2.12.9(better-sqlite3@12.4.1)(idb-keyval@6.2.2) - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) pathe: 2.0.3 pkg-types: 2.3.0 radix3: 1.1.2 std-env: 3.10.0 ufo: 1.6.1 unctx: 2.4.1 - unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) - vue: 3.5.22(typescript@5.9.3) + unstorage: 1.17.2(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) + vue: 3.5.24(typescript@5.9.3) vue-bundle-renderer: 2.2.0 vue-devtools-stub: 0.1.0 transitivePeerDependencies: @@ -8288,81 +8288,17 @@ snapshots: - uploadthing - xml2js - '@nuxt/nitro-server@4.2.0(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(typescript@5.9.3)': + '@nuxt/schema@4.2.1': dependencies: - '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vue/shared': 3.5.22 - consola: 3.4.2 + '@vue/shared': 3.5.24 defu: 6.1.4 - destr: 2.0.5 - devalue: 5.4.2 - errx: 0.1.0 - escape-string-regexp: 5.0.0 - exsolve: 1.0.7 - h3: 1.15.4 - impound: 1.0.0 - klona: 2.0.6 - mocked-exports: 0.1.1 - nitropack: 2.12.9(better-sqlite3@12.4.1)(idb-keyval@6.2.2) - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) pathe: 2.0.3 pkg-types: 2.3.0 - radix3: 1.1.2 std-env: 3.10.0 - ufo: 1.6.1 - unctx: 2.4.1 - unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) - vue: 3.5.22(typescript@5.9.3) - vue-bundle-renderer: 2.2.0 - vue-devtools-stub: 0.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bare-abort-controller - - better-sqlite3 - - db0 - - drizzle-orm - - encoding - - idb-keyval - - ioredis - - magicast - - mysql2 - - react-native-b4a - - rolldown - - sqlite3 - - supports-color - - typescript - - uploadthing - - xml2js - '@nuxt/schema@4.2.0': + '@nuxt/telemetry@2.6.6(magicast@0.5.1)': dependencies: - '@vue/shared': 3.5.22 - defu: 6.1.4 - pathe: 2.0.3 - pkg-types: 2.3.0 - std-env: 3.10.0 - - '@nuxt/telemetry@2.6.6(magicast@0.3.5)': - dependencies: - '@nuxt/kit': 3.20.0(magicast@0.3.5) + '@nuxt/kit': 3.20.1(magicast@0.5.1) citty: 0.1.6 consola: 3.4.2 destr: 2.0.5 @@ -8377,136 +8313,25 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/telemetry@2.6.6(magicast@0.5.0)': - dependencies: - '@nuxt/kit': 3.20.0(magicast@0.5.0) - citty: 0.1.6 - consola: 3.4.2 - destr: 2.0.5 - dotenv: 16.6.1 - git-url-parse: 16.1.0 - is-docker: 3.0.0 - ofetch: 1.5.1 - package-manager-detector: 1.5.0 - pathe: 2.0.3 - rc9: 2.1.2 - std-env: 3.10.0 - transitivePeerDependencies: - - magicast - - '@nuxt/ui@4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(zod@4.1.12)': - dependencies: - '@ai-sdk/vue': 2.0.81(vue@3.5.22(typescript@5.9.3))(zod@4.1.12) - '@iconify/vue': 5.0.0(vue@3.5.22(typescript@5.9.3)) - '@internationalized/date': 3.10.0 - '@internationalized/number': 3.6.5 - '@nuxt/fonts': 0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/icon': 2.1.0(magicast@0.3.5)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@nuxt/schema': 4.2.0 - '@nuxtjs/color-mode': 3.5.2(magicast@0.3.5) - '@standard-schema/spec': 1.0.0 - '@tailwindcss/postcss': 4.1.16 - '@tailwindcss/vite': 4.1.16(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@tanstack/vue-table': 8.21.3(vue@3.5.22(typescript@5.9.3)) - '@tanstack/vue-virtual': 3.13.12(vue@3.5.22(typescript@5.9.3)) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) - '@vueuse/integrations': 13.9.0(change-case@5.4.4)(fuse.js@7.1.0)(idb-keyval@6.2.2)(vue@3.5.22(typescript@5.9.3)) - colortranslator: 5.0.0 - consola: 3.4.2 - defu: 6.1.4 - embla-carousel-auto-height: 8.6.0(embla-carousel@8.6.0) - embla-carousel-auto-scroll: 8.6.0(embla-carousel@8.6.0) - embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0) - embla-carousel-class-names: 8.6.0(embla-carousel@8.6.0) - embla-carousel-fade: 8.6.0(embla-carousel@8.6.0) - embla-carousel-vue: 8.6.0(vue@3.5.22(typescript@5.9.3)) - embla-carousel-wheel-gestures: 8.1.0(embla-carousel@8.6.0) - fuse.js: 7.1.0 - hookable: 5.5.3 - knitwork: 1.2.0 - magic-string: 0.30.21 - mlly: 1.8.0 - motion-v: 1.7.4(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - ohash: 2.0.11 - pathe: 2.0.3 - reka-ui: 2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)) - scule: 1.3.0 - tailwind-merge: 3.3.1 - tailwind-variants: 3.1.1(tailwind-merge@3.3.1)(tailwindcss@4.1.16) - tailwindcss: 4.1.16 - tinyglobby: 0.2.15 - typescript: 5.9.3 - unplugin: 2.3.10 - unplugin-auto-import: 20.2.0(@nuxt/kit@4.2.0(magicast@0.3.5))(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))) - unplugin-vue-components: 30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.0(magicast@0.3.5))(vue@3.5.22(typescript@5.9.3)) - vaul-vue: 0.4.1(reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - vue-component-type-helpers: 3.1.2 - optionalDependencies: - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) - zod: 4.1.12 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@babel/parser' - - '@capacitor/preferences' - - '@deno/kv' - - '@emotion/is-prop-valid' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - '@vue/composition-api' - - async-validator - - aws4fetch - - axios - - change-case - - db0 - - drauu - - embla-carousel - - encoding - - focus-trap - - idb-keyval - - ioredis - - jwt-decode - - magicast - - nprogress - - qrcode - - react - - react-dom - - sortablejs - - supports-color - - universal-cookie - - uploadthing - - vite - - vue - - '@nuxt/ui@4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(zod@4.1.12)': + '@nuxt/ui@4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))(zod@4.1.12)': dependencies: - '@ai-sdk/vue': 2.0.81(vue@3.5.22(typescript@5.9.3))(zod@4.1.12) - '@iconify/vue': 5.0.0(vue@3.5.22(typescript@5.9.3)) + '@ai-sdk/vue': 2.0.92(vue@3.5.24(typescript@5.9.3))(zod@4.1.12) + '@iconify/vue': 5.0.0(vue@3.5.24(typescript@5.9.3)) '@internationalized/date': 3.10.0 '@internationalized/number': 3.6.5 - '@nuxt/fonts': 0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/icon': 2.1.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@nuxt/schema': 4.2.0 - '@nuxtjs/color-mode': 3.5.2(magicast@0.5.0) + '@nuxt/fonts': 0.11.4(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + '@nuxt/icon': 2.1.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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/schema': 4.2.1 + '@nuxtjs/color-mode': 3.5.2(magicast@0.5.1) '@standard-schema/spec': 1.0.0 - '@tailwindcss/postcss': 4.1.16 - '@tailwindcss/vite': 4.1.16(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@tanstack/vue-table': 8.21.3(vue@3.5.22(typescript@5.9.3)) - '@tanstack/vue-virtual': 3.13.12(vue@3.5.22(typescript@5.9.3)) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) - '@vueuse/integrations': 13.9.0(change-case@5.4.4)(fuse.js@7.1.0)(idb-keyval@6.2.2)(vue@3.5.22(typescript@5.9.3)) + '@tailwindcss/postcss': 4.1.17 + '@tailwindcss/vite': 4.1.17(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + '@tanstack/vue-table': 8.21.3(vue@3.5.24(typescript@5.9.3)) + '@tanstack/vue-virtual': 3.13.12(vue@3.5.24(typescript@5.9.3)) + '@unhead/vue': 2.0.19(vue@3.5.24(typescript@5.9.3)) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) + '@vueuse/integrations': 13.9.0(change-case@5.4.4)(fuse.js@7.1.0)(idb-keyval@6.2.2)(vue@3.5.24(typescript@5.9.3)) colortranslator: 5.0.0 consola: 3.4.2 defu: 6.1.4 @@ -8515,30 +8340,30 @@ snapshots: embla-carousel-autoplay: 8.6.0(embla-carousel@8.6.0) embla-carousel-class-names: 8.6.0(embla-carousel@8.6.0) embla-carousel-fade: 8.6.0(embla-carousel@8.6.0) - embla-carousel-vue: 8.6.0(vue@3.5.22(typescript@5.9.3)) + embla-carousel-vue: 8.6.0(vue@3.5.24(typescript@5.9.3)) embla-carousel-wheel-gestures: 8.1.0(embla-carousel@8.6.0) fuse.js: 7.1.0 hookable: 5.5.3 knitwork: 1.2.0 magic-string: 0.30.21 mlly: 1.8.0 - motion-v: 1.7.4(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) + motion-v: 1.7.4(@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) ohash: 2.0.11 pathe: 2.0.3 - reka-ui: 2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)) + reka-ui: 2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) scule: 1.3.0 - tailwind-merge: 3.3.1 - tailwind-variants: 3.1.1(tailwind-merge@3.3.1)(tailwindcss@4.1.16) - tailwindcss: 4.1.16 + tailwind-merge: 3.4.0 + tailwind-variants: 3.1.1(tailwind-merge@3.4.0)(tailwindcss@4.1.17) + tailwindcss: 4.1.17 tinyglobby: 0.2.15 typescript: 5.9.3 unplugin: 2.3.10 - unplugin-auto-import: 20.2.0(@nuxt/kit@4.2.0(magicast@0.5.0))(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))) - unplugin-vue-components: 30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.0(magicast@0.5.0))(vue@3.5.22(typescript@5.9.3)) - vaul-vue: 0.4.1(reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - vue-component-type-helpers: 3.1.2 + unplugin-auto-import: 20.2.0(@nuxt/kit@4.2.1)(@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3))) + unplugin-vue-components: 30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.1)(vue@3.5.24(typescript@5.9.3)) + vaul-vue: 0.4.1(reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) + vue-component-type-helpers: 3.1.3 optionalDependencies: - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) + vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3)) zod: 4.1.12 transitivePeerDependencies: - '@azure/app-configuration' @@ -8582,78 +8407,19 @@ snapshots: - vite - vue - '@nuxt/vite-builder@4.2.0(@types/node@24.9.1)(eslint@9.39.1(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3))(yaml@2.8.1)': - dependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) - '@vitejs/plugin-vue': 6.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@vitejs/plugin-vue-jsx': 5.1.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - autoprefixer: 10.4.21(postcss@8.5.6) - consola: 3.4.2 - cssnano: 7.1.1(postcss@8.5.6) - defu: 6.1.4 - esbuild: 0.25.11 - escape-string-regexp: 5.0.0 - exsolve: 1.0.7 - get-port-please: 3.2.0 - h3: 1.15.4 - jiti: 2.6.1 - knitwork: 1.2.0 - magic-string: 0.30.21 - mlly: 1.8.0 - mocked-exports: 0.1.1 - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) - pathe: 2.0.3 - pkg-types: 2.3.0 - postcss: 8.5.6 - rollup-plugin-visualizer: 6.0.5(rollup@4.52.5) - seroval: 1.3.2 - std-env: 3.10.0 - ufo: 1.6.1 - unenv: 2.0.0-rc.23 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-plugin-checker: 0.11.0(eslint@9.39.1(jiti@2.6.1))(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3)) - vue: 3.5.22(typescript@5.9.3) - vue-bundle-renderer: 2.2.0 - transitivePeerDependencies: - - '@biomejs/biome' - - '@types/node' - - eslint - - less - - lightningcss - - magicast - - meow - - optionator - - oxlint - - rollup - - sass - - sass-embedded - - stylelint - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - vls - - vti - - vue-tsc - - yaml - - '@nuxt/vite-builder@4.2.0(@types/node@24.9.1)(eslint@9.39.1(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(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))(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3))(yaml@2.8.1)': dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) - '@vitejs/plugin-vue': 6.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@vitejs/plugin-vue-jsx': 5.1.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - autoprefixer: 10.4.21(postcss@8.5.6) + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.53.2) + '@vitejs/plugin-vue': 6.0.1(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) + '@vitejs/plugin-vue-jsx': 5.1.1(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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.1(postcss@8.5.6) + cssnano: 7.1.2(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 - exsolve: 1.0.7 + exsolve: 1.0.8 get-port-please: 3.2.0 h3: 1.15.4 jiti: 2.6.1 @@ -8661,19 +8427,19 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.0 mocked-exports: 0.1.1 - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) pathe: 2.0.3 pkg-types: 2.3.0 postcss: 8.5.6 - rollup-plugin-visualizer: 6.0.5(rollup@4.52.5) + rollup-plugin-visualizer: 6.0.5(rollup@4.53.2) seroval: 1.3.2 std-env: 3.10.0 ufo: 1.6.1 - unenv: 2.0.0-rc.23 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-plugin-checker: 0.11.0(eslint@9.39.1(jiti@2.6.1))(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3)) - vue: 3.5.22(typescript@5.9.3) + unenv: 2.0.0-rc.24 + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vite-node: 5.0.0(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vite-plugin-checker: 0.11.0(eslint@9.39.1(jiti@2.6.1))(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) vue-bundle-renderer: 2.2.0 transitivePeerDependencies: - '@biomejs/biome' @@ -8700,35 +8466,26 @@ snapshots: - vue-tsc - yaml - '@nuxtjs/color-mode@3.5.2(magicast@0.3.5)': + '@nuxtjs/color-mode@3.5.2(magicast@0.5.1)': dependencies: - '@nuxt/kit': 3.20.0(magicast@0.3.5) + '@nuxt/kit': 3.20.1(magicast@0.5.1) pathe: 1.1.2 pkg-types: 1.3.1 semver: 7.7.3 transitivePeerDependencies: - magicast - '@nuxtjs/color-mode@3.5.2(magicast@0.5.0)': - dependencies: - '@nuxt/kit': 3.20.0(magicast@0.5.0) - pathe: 1.1.2 - pkg-types: 1.3.1 - semver: 7.7.3 - transitivePeerDependencies: - - magicast - - '@nuxtjs/i18n@10.1.2(@vue/compiler-dom@3.5.22)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(rollup@4.52.5)(vue@3.5.22(typescript@5.9.3))': + '@nuxtjs/i18n@10.2.0(@vue/compiler-dom@3.5.24)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(rollup@4.53.2)(vue@3.5.24(typescript@5.9.3))': dependencies: '@intlify/core': 11.1.12 - '@intlify/h3': 0.7.1 + '@intlify/h3': 0.7.4 '@intlify/shared': 11.1.12 - '@intlify/unplugin-vue-i18n': 11.0.1(@vue/compiler-dom@3.5.22)(eslint@9.39.1(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) + '@intlify/unplugin-vue-i18n': 11.0.1(@vue/compiler-dom@3.5.24)(eslint@9.39.1(jiti@2.6.1))(rollup@4.53.2)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) '@intlify/utils': 0.13.0 - '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.52.5) - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@rollup/plugin-yaml': 4.1.2(rollup@4.52.5) - '@vue/compiler-sfc': 3.5.22 + '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.53.2) + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@rollup/plugin-yaml': 4.1.2(rollup@4.53.2) + '@vue/compiler-sfc': 3.5.24 defu: 6.1.4 devalue: 5.4.2 h3: 1.15.4 @@ -8744,10 +8501,10 @@ snapshots: typescript: 5.9.3 ufo: 1.6.1 unplugin: 2.3.10 - unplugin-vue-router: 0.16.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) + unplugin-vue-router: 0.16.1(@vue/compiler-sfc@3.5.24)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) - vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3)) - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) + vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -8776,65 +8533,16 @@ snapshots: - uploadthing - vue - '@nuxtjs/mdc@0.18.0(magicast@0.3.5)': - dependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@shikijs/core': 3.14.0 - '@shikijs/langs': 3.14.0 - '@shikijs/themes': 3.14.0 - '@shikijs/transformers': 3.14.0 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@vue/compiler-core': 3.5.22 - consola: 3.4.2 - debug: 4.4.3 - defu: 6.1.4 - destr: 2.0.5 - detab: 3.0.2 - github-slugger: 2.0.0 - hast-util-format: 1.1.0 - hast-util-to-mdast: 10.1.2 - hast-util-to-string: 3.0.1 - mdast-util-to-hast: 13.2.0 - micromark-util-sanitize-uri: 2.0.1 - parse5: 8.0.0 - pathe: 2.0.3 - property-information: 7.1.0 - rehype-external-links: 3.0.0 - rehype-minify-whitespace: 6.0.2 - rehype-raw: 7.0.0 - rehype-remark: 10.0.1 - rehype-slug: 6.0.0 - rehype-sort-attribute-values: 5.0.1 - rehype-sort-attributes: 5.0.1 - remark-emoji: 5.0.2 - remark-gfm: 4.0.1 - remark-mdc: 3.8.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - remark-stringify: 11.0.0 - scule: 1.3.0 - shiki: 3.14.0 - ufo: 1.6.1 - unified: 11.0.5 - unist-builder: 4.0.0 - unist-util-visit: 5.0.0 - unwasm: 0.3.11 - vfile: 6.0.3 - transitivePeerDependencies: - - magicast - - supports-color - - '@nuxtjs/mdc@0.18.0(magicast@0.5.0)': + '@nuxtjs/mdc@0.18.3': dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@shikijs/core': 3.14.0 - '@shikijs/langs': 3.14.0 - '@shikijs/themes': 3.14.0 - '@shikijs/transformers': 3.14.0 + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@shikijs/core': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/transformers': 3.15.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@vue/compiler-core': 3.5.22 + '@vue/compiler-core': 3.5.24 consola: 3.4.2 debug: 4.4.3 defu: 6.1.4 @@ -8863,27 +8571,27 @@ snapshots: remark-rehype: 11.1.2 remark-stringify: 11.0.0 scule: 1.3.0 - shiki: 3.14.0 + shiki: 3.15.0 ufo: 1.6.1 unified: 11.0.5 unist-builder: 4.0.0 unist-util-visit: 5.0.0 - unwasm: 0.3.11 + unwasm: 0.5.0 vfile: 6.0.3 transitivePeerDependencies: - magicast - supports-color - '@nuxtjs/mdc@0.18.2(magicast@0.3.5)': + '@nuxtjs/mdc@https://pkg.pr.new/@nuxtjs/mdc@cb6a227(magicast@0.5.1)': dependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@shikijs/core': 3.14.0 - '@shikijs/langs': 3.14.0 - '@shikijs/themes': 3.14.0 - '@shikijs/transformers': 3.14.0 + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@shikijs/core': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/transformers': 3.15.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@vue/compiler-core': 3.5.22 + '@vue/compiler-core': 3.5.24 consola: 3.4.2 debug: 4.4.3 defu: 6.1.4 @@ -8912,7 +8620,7 @@ snapshots: remark-rehype: 11.1.2 remark-stringify: 11.0.0 scule: 1.3.0 - shiki: 3.14.0 + shiki: 3.15.0 ufo: 1.6.1 unified: 11.0.5 unist-builder: 4.0.0 @@ -8923,13 +8631,13 @@ snapshots: - magicast - supports-color - '@nuxtjs/robots@5.5.6(h3@1.15.4)(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3))': + '@nuxtjs/robots@5.5.6(h3@1.15.4)(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3))': dependencies: '@fingerprintjs/botd': 1.9.1 - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) consola: 3.4.2 defu: 6.1.4 - nuxt-site-config: 3.2.11(h3@1.15.4)(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)) + nuxt-site-config: 3.2.11(h3@1.15.4)(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)) pathe: 2.0.3 pkg-types: 2.3.0 sirv: 3.0.2 @@ -8970,7 +8678,7 @@ snapshots: '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.6)': dependencies: '@octokit/core': 7.0.6 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)': dependencies: @@ -8979,7 +8687,7 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@16.1.1(@octokit/core@7.0.6)': dependencies: '@octokit/core': 7.0.6 - '@octokit/types': 15.0.1 + '@octokit/types': 15.0.2 '@octokit/request-error@7.0.2': dependencies: @@ -9000,7 +8708,7 @@ snapshots: '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6) '@octokit/plugin-rest-endpoint-methods': 16.1.1(@octokit/core@7.0.6) - '@octokit/types@15.0.1': + '@octokit/types@15.0.2': dependencies: '@octokit/openapi-types': 26.0.0 @@ -9010,149 +8718,245 @@ snapshots: '@opentelemetry/api@1.9.0': {} - '@oxc-minify/binding-android-arm64@0.95.0': + '@oxc-minify/binding-android-arm64@0.96.0': optional: true - '@oxc-minify/binding-darwin-arm64@0.95.0': + '@oxc-minify/binding-darwin-arm64@0.96.0': optional: true - '@oxc-minify/binding-darwin-x64@0.95.0': + '@oxc-minify/binding-darwin-x64@0.96.0': optional: true - '@oxc-minify/binding-freebsd-x64@0.95.0': + '@oxc-minify/binding-freebsd-x64@0.96.0': optional: true - '@oxc-minify/binding-linux-arm-gnueabihf@0.95.0': + '@oxc-minify/binding-linux-arm-gnueabihf@0.96.0': optional: true - '@oxc-minify/binding-linux-arm-musleabihf@0.95.0': + '@oxc-minify/binding-linux-arm-musleabihf@0.96.0': optional: true - '@oxc-minify/binding-linux-arm64-gnu@0.95.0': + '@oxc-minify/binding-linux-arm64-gnu@0.96.0': optional: true - '@oxc-minify/binding-linux-arm64-musl@0.95.0': + '@oxc-minify/binding-linux-arm64-musl@0.96.0': optional: true - '@oxc-minify/binding-linux-riscv64-gnu@0.95.0': + '@oxc-minify/binding-linux-riscv64-gnu@0.96.0': optional: true - '@oxc-minify/binding-linux-s390x-gnu@0.95.0': + '@oxc-minify/binding-linux-s390x-gnu@0.96.0': optional: true - '@oxc-minify/binding-linux-x64-gnu@0.95.0': + '@oxc-minify/binding-linux-x64-gnu@0.96.0': optional: true - '@oxc-minify/binding-linux-x64-musl@0.95.0': + '@oxc-minify/binding-linux-x64-musl@0.96.0': optional: true - '@oxc-minify/binding-wasm32-wasi@0.95.0': + '@oxc-minify/binding-wasm32-wasi@0.96.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@oxc-minify/binding-win32-arm64-msvc@0.95.0': + '@oxc-minify/binding-win32-arm64-msvc@0.96.0': optional: true - '@oxc-minify/binding-win32-x64-msvc@0.95.0': + '@oxc-minify/binding-win32-x64-msvc@0.96.0': optional: true '@oxc-parser/binding-android-arm64@0.95.0': optional: true + '@oxc-parser/binding-android-arm64@0.96.0': + optional: true + '@oxc-parser/binding-darwin-arm64@0.95.0': optional: true + '@oxc-parser/binding-darwin-arm64@0.96.0': + optional: true + '@oxc-parser/binding-darwin-x64@0.95.0': optional: true + '@oxc-parser/binding-darwin-x64@0.96.0': + optional: true + '@oxc-parser/binding-freebsd-x64@0.95.0': optional: true + '@oxc-parser/binding-freebsd-x64@0.96.0': + optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.95.0': optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.96.0': + optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.95.0': optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.96.0': + optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.95.0': optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.96.0': + optional: true + '@oxc-parser/binding-linux-arm64-musl@0.95.0': optional: true + '@oxc-parser/binding-linux-arm64-musl@0.96.0': + optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.95.0': optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.96.0': + optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.95.0': optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.96.0': + optional: true + '@oxc-parser/binding-linux-x64-gnu@0.95.0': optional: true + '@oxc-parser/binding-linux-x64-gnu@0.96.0': + optional: true + '@oxc-parser/binding-linux-x64-musl@0.95.0': optional: true + '@oxc-parser/binding-linux-x64-musl@0.96.0': + optional: true + '@oxc-parser/binding-wasm32-wasi@0.95.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true + '@oxc-parser/binding-wasm32-wasi@0.96.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.95.0': optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.96.0': + optional: true + '@oxc-parser/binding-win32-x64-msvc@0.95.0': optional: true + '@oxc-parser/binding-win32-x64-msvc@0.96.0': + optional: true + '@oxc-project/types@0.95.0': {} + '@oxc-project/types@0.96.0': {} + '@oxc-transform/binding-android-arm64@0.95.0': optional: true + '@oxc-transform/binding-android-arm64@0.96.0': + optional: true + '@oxc-transform/binding-darwin-arm64@0.95.0': optional: true + '@oxc-transform/binding-darwin-arm64@0.96.0': + optional: true + '@oxc-transform/binding-darwin-x64@0.95.0': optional: true - '@oxc-transform/binding-freebsd-x64@0.95.0': + '@oxc-transform/binding-darwin-x64@0.96.0': + optional: true + + '@oxc-transform/binding-freebsd-x64@0.95.0': + optional: true + + '@oxc-transform/binding-freebsd-x64@0.96.0': optional: true '@oxc-transform/binding-linux-arm-gnueabihf@0.95.0': optional: true + '@oxc-transform/binding-linux-arm-gnueabihf@0.96.0': + optional: true + '@oxc-transform/binding-linux-arm-musleabihf@0.95.0': optional: true + '@oxc-transform/binding-linux-arm-musleabihf@0.96.0': + optional: true + '@oxc-transform/binding-linux-arm64-gnu@0.95.0': optional: true + '@oxc-transform/binding-linux-arm64-gnu@0.96.0': + optional: true + '@oxc-transform/binding-linux-arm64-musl@0.95.0': optional: true + '@oxc-transform/binding-linux-arm64-musl@0.96.0': + optional: true + '@oxc-transform/binding-linux-riscv64-gnu@0.95.0': optional: true + '@oxc-transform/binding-linux-riscv64-gnu@0.96.0': + optional: true + '@oxc-transform/binding-linux-s390x-gnu@0.95.0': optional: true + '@oxc-transform/binding-linux-s390x-gnu@0.96.0': + optional: true + '@oxc-transform/binding-linux-x64-gnu@0.95.0': optional: true + '@oxc-transform/binding-linux-x64-gnu@0.96.0': + optional: true + '@oxc-transform/binding-linux-x64-musl@0.95.0': optional: true + '@oxc-transform/binding-linux-x64-musl@0.96.0': + optional: true + '@oxc-transform/binding-wasm32-wasi@0.95.0': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true + '@oxc-transform/binding-wasm32-wasi@0.96.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + '@oxc-transform/binding-win32-arm64-msvc@0.95.0': optional: true + '@oxc-transform/binding-win32-arm64-msvc@0.96.0': + optional: true + '@oxc-transform/binding-win32-x64-msvc@0.95.0': optional: true + '@oxc-transform/binding-win32-x64-msvc@0.96.0': + optional: true + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -9229,21 +9033,21 @@ snapshots: dependencies: kleur: 4.1.5 - '@poppinss/dumper@0.6.4': + '@poppinss/dumper@0.6.5': dependencies: '@poppinss/colors': 4.1.5 - '@sindresorhus/is': 7.1.0 + '@sindresorhus/is': 7.1.1 supports-color: 10.2.2 '@poppinss/exception@1.2.2': {} - '@release-it/conventional-changelog@10.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)(release-it@19.0.6(@types/node@24.9.1)(magicast@0.3.5))': + '@release-it/conventional-changelog@10.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)(release-it@19.0.6(@types/node@24.10.1))': dependencies: concat-stream: 2.0.0 conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) conventional-recommended-bump: 10.0.0 git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) - release-it: 19.0.6(@types/node@24.9.1)(magicast@0.3.5) + release-it: 19.0.6(@types/node@24.10.1) semver: 7.7.3 transitivePeerDependencies: - conventional-commits-filter @@ -9304,15 +9108,15 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.29': {} - '@rolldown/pluginutils@1.0.0-beta.45': {} + '@rolldown/pluginutils@1.0.0-beta.50': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': + '@rollup/plugin-alias@5.1.1(rollup@4.53.2)': optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-commonjs@28.0.9(rollup@4.52.5)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -9320,130 +9124,130 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-inject@5.0.5(rollup@4.52.5)': + '@rollup/plugin-inject@5.0.5(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-json@6.1.0(rollup@4.52.5)': + '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.5)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-replace@6.0.2(rollup@4.52.5)': + '@rollup/plugin-replace@6.0.3(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) magic-string: 0.30.21 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-terser@0.4.4(rollup@4.52.5)': + '@rollup/plugin-terser@0.4.4(rollup@4.53.2)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.44.0 + terser: 5.44.1 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/plugin-yaml@4.1.2(rollup@4.52.5)': + '@rollup/plugin-yaml@4.1.2(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) js-yaml: 4.1.0 tosource: 2.0.0-alpha.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + '@rollup/pluginutils@5.3.0(rollup@4.53.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - '@rollup/rollup-android-arm-eabi@4.52.5': + '@rollup/rollup-android-arm-eabi@4.53.2': optional: true - '@rollup/rollup-android-arm64@4.52.5': + '@rollup/rollup-android-arm64@4.53.2': optional: true - '@rollup/rollup-darwin-arm64@4.52.5': + '@rollup/rollup-darwin-arm64@4.53.2': optional: true - '@rollup/rollup-darwin-x64@4.52.5': + '@rollup/rollup-darwin-x64@4.53.2': optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': + '@rollup/rollup-freebsd-arm64@4.53.2': optional: true - '@rollup/rollup-freebsd-x64@4.52.5': + '@rollup/rollup-freebsd-x64@4.53.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': + '@rollup/rollup-linux-arm-musleabihf@4.53.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': + '@rollup/rollup-linux-arm64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': + '@rollup/rollup-linux-arm64-musl@4.53.2': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': + '@rollup/rollup-linux-loong64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': + '@rollup/rollup-linux-ppc64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': + '@rollup/rollup-linux-riscv64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': + '@rollup/rollup-linux-riscv64-musl@4.53.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': + '@rollup/rollup-linux-s390x-gnu@4.53.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': + '@rollup/rollup-linux-x64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': + '@rollup/rollup-linux-x64-musl@4.53.2': optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': + '@rollup/rollup-openharmony-arm64@4.53.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': + '@rollup/rollup-win32-arm64-msvc@4.53.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': + '@rollup/rollup-win32-ia32-msvc@4.53.2': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': + '@rollup/rollup-win32-x64-gnu@4.53.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': + '@rollup/rollup-win32-x64-msvc@4.53.2': optional: true - '@rushstack/node-core-library@5.18.0(@types/node@24.9.1)': + '@rushstack/node-core-library@5.18.0(@types/node@24.10.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -9454,28 +9258,28 @@ snapshots: resolve: 1.22.11 semver: 7.5.4 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@rushstack/problem-matcher@0.1.1(@types/node@24.9.1)': + '@rushstack/problem-matcher@0.1.1(@types/node@24.10.1)': optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 '@rushstack/rig-package@0.6.0': dependencies: resolve: 1.22.11 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.19.3(@types/node@24.9.1)': + '@rushstack/terminal@0.19.3(@types/node@24.10.1)': dependencies: - '@rushstack/node-core-library': 5.18.0(@types/node@24.9.1) - '@rushstack/problem-matcher': 0.1.1(@types/node@24.9.1) + '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) + '@rushstack/problem-matcher': 0.1.1(@types/node@24.10.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 - '@rushstack/ts-command-line@5.1.3(@types/node@24.9.1)': + '@rushstack/ts-command-line@5.1.3(@types/node@24.10.1)': dependencies: - '@rushstack/terminal': 0.19.3(@types/node@24.9.1) + '@rushstack/terminal': 0.19.3(@types/node@24.10.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -9484,38 +9288,38 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@3.14.0': + '@shikijs/core@3.15.0': dependencies: - '@shikijs/types': 3.14.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.14.0': + '@shikijs/engine-javascript@3.15.0': dependencies: - '@shikijs/types': 3.14.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.14.0': + '@shikijs/engine-oniguruma@3.15.0': dependencies: - '@shikijs/types': 3.14.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.14.0': + '@shikijs/langs@3.15.0': dependencies: - '@shikijs/types': 3.14.0 + '@shikijs/types': 3.15.0 - '@shikijs/themes@3.14.0': + '@shikijs/themes@3.15.0': dependencies: - '@shikijs/types': 3.14.0 + '@shikijs/types': 3.15.0 - '@shikijs/transformers@3.14.0': + '@shikijs/transformers@3.15.0': dependencies: - '@shikijs/core': 3.14.0 - '@shikijs/types': 3.14.0 + '@shikijs/core': 3.15.0 + '@shikijs/types': 3.15.0 - '@shikijs/types@3.14.0': + '@shikijs/types@3.15.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -9531,13 +9335,13 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@sindresorhus/is@7.1.0': {} + '@sindresorhus/is@7.1.1': {} '@sindresorhus/merge-streams@4.0.0': {} '@socket.io/component-emitter@3.1.2': {} - '@speed-highlight/core@1.2.8': {} + '@speed-highlight/core@1.2.12': {} '@sqlite.org/sqlite-wasm@3.50.4-build1': {} @@ -9546,7 +9350,7 @@ snapshots: '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.4 eslint: 9.39.1(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -9557,7 +9361,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.1.16': + '@tailwindcss/node@4.1.17': dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.18.3 @@ -9565,92 +9369,92 @@ snapshots: lightningcss: 1.30.2 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.16 + tailwindcss: 4.1.17 - '@tailwindcss/oxide-android-arm64@4.1.16': + '@tailwindcss/oxide-android-arm64@4.1.17': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.16': + '@tailwindcss/oxide-darwin-arm64@4.1.17': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.16': + '@tailwindcss/oxide-darwin-x64@4.1.17': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.16': + '@tailwindcss/oxide-freebsd-x64@4.1.17': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.16': + '@tailwindcss/oxide-linux-arm64-musl@4.1.17': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.16': + '@tailwindcss/oxide-linux-x64-gnu@4.1.17': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.16': + '@tailwindcss/oxide-linux-x64-musl@4.1.17': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.16': + '@tailwindcss/oxide-wasm32-wasi@4.1.17': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.16': + '@tailwindcss/oxide-win32-x64-msvc@4.1.17': optional: true - '@tailwindcss/oxide@4.1.16': + '@tailwindcss/oxide@4.1.17': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.16 - '@tailwindcss/oxide-darwin-arm64': 4.1.16 - '@tailwindcss/oxide-darwin-x64': 4.1.16 - '@tailwindcss/oxide-freebsd-x64': 4.1.16 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.16 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.16 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.16 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.16 - '@tailwindcss/oxide-linux-x64-musl': 4.1.16 - '@tailwindcss/oxide-wasm32-wasi': 4.1.16 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.16 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.16 - - '@tailwindcss/postcss@4.1.16': + '@tailwindcss/oxide-android-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-arm64': 4.1.17 + '@tailwindcss/oxide-darwin-x64': 4.1.17 + '@tailwindcss/oxide-freebsd-x64': 4.1.17 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.17 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.17 + '@tailwindcss/oxide-linux-x64-musl': 4.1.17 + '@tailwindcss/oxide-wasm32-wasi': 4.1.17 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 + + '@tailwindcss/postcss@4.1.17': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.16 - '@tailwindcss/oxide': 4.1.16 + '@tailwindcss/node': 4.1.17 + '@tailwindcss/oxide': 4.1.17 postcss: 8.5.6 - tailwindcss: 4.1.16 + tailwindcss: 4.1.17 - '@tailwindcss/typography@0.5.19(tailwindcss@4.1.16)': + '@tailwindcss/typography@0.5.19(tailwindcss@4.1.17)': dependencies: postcss-selector-parser: 6.0.10 - tailwindcss: 4.1.16 + tailwindcss: 4.1.17 - '@tailwindcss/vite@4.1.16(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))': + '@tailwindcss/vite@4.1.17(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: - '@tailwindcss/node': 4.1.16 - '@tailwindcss/oxide': 4.1.16 - tailwindcss: 4.1.16 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + '@tailwindcss/node': 4.1.17 + '@tailwindcss/oxide': 4.1.17 + tailwindcss: 4.1.17 + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) '@tanstack/table-core@8.21.3': {} '@tanstack/virtual-core@3.13.12': {} - '@tanstack/vue-table@8.21.3(vue@3.5.22(typescript@5.9.3))': + '@tanstack/vue-table@8.21.3(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/table-core': 8.21.3 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@tanstack/vue-virtual@3.13.12(vue@3.5.22(typescript@5.9.3))': + '@tanstack/vue-virtual@3.13.12(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/virtual-core': 3.13.12 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@tootallnate/quickjs-emscripten@0.23.0': {} @@ -9693,7 +9497,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@24.9.1': + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 @@ -9715,14 +9519,14 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/type-utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.4 eslint: 9.39.1(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -9732,41 +9536,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.4 debug: 4.4.3 eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.2': + '@typescript-eslint/scope-manager@8.46.4': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/visitor-keys': 8.46.4 - '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -9774,14 +9578,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} + '@typescript-eslint/types@8.46.4': {} - '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/visitor-keys': 8.46.4 debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -9792,61 +9596,61 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.4 + '@typescript-eslint/types': 8.46.4 + '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.2': + '@typescript-eslint/visitor-keys@8.46.4': dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.4 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@unhead/vue@2.0.19(vue@3.5.22(typescript@5.9.3))': + '@unhead/vue@2.0.19(vue@3.5.24(typescript@5.9.3))': dependencies: hookable: 5.5.3 unhead: 2.0.19 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@unocss/core@66.5.4': {} + '@unocss/core@66.5.6': {} - '@unocss/extractor-arbitrary-variants@66.5.4': + '@unocss/extractor-arbitrary-variants@66.5.6': dependencies: - '@unocss/core': 66.5.4 + '@unocss/core': 66.5.6 - '@unocss/preset-mini@66.5.4': + '@unocss/preset-mini@66.5.6': dependencies: - '@unocss/core': 66.5.4 - '@unocss/extractor-arbitrary-variants': 66.5.4 - '@unocss/rule-utils': 66.5.4 + '@unocss/core': 66.5.6 + '@unocss/extractor-arbitrary-variants': 66.5.6 + '@unocss/rule-utils': 66.5.6 - '@unocss/preset-wind3@66.5.4': + '@unocss/preset-wind3@66.5.6': dependencies: - '@unocss/core': 66.5.4 - '@unocss/preset-mini': 66.5.4 - '@unocss/rule-utils': 66.5.4 + '@unocss/core': 66.5.6 + '@unocss/preset-mini': 66.5.6 + '@unocss/rule-utils': 66.5.6 - '@unocss/rule-utils@66.5.4': + '@unocss/rule-utils@66.5.6': dependencies: - '@unocss/core': 66.5.4 + '@unocss/core': 66.5.6 magic-string: 0.30.21 '@unpic/core@1.0.2': dependencies: - unpic: 4.1.3 + unpic: 4.2.2 '@unpic/vue@1.0.0(typescript@5.9.3)': dependencies: '@unpic/core': 1.0.2 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript @@ -9909,10 +9713,10 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/nft@0.30.3(rollup@4.52.5)': + '@vercel/nft@0.30.3(rollup@4.53.2)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -9930,23 +9734,23 @@ snapshots: '@vercel/oidc@3.0.3': {} - '@vitejs/plugin-vue-jsx@5.1.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@5.1.1(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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.45 + '@rolldown/pluginutils': 1.0.0-beta.50 '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5) - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vue: 3.5.22(typescript@5.9.3) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.1(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vue: 3.5.22(typescript@5.9.3) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vue: 3.5.24(typescript@5.9.3) '@vitest/expect@3.2.4': dependencies: @@ -9956,13 +9760,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -10002,15 +9806,15 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.1(vue@3.5.22(typescript@5.9.3))': + '@vue-macros/common@3.1.1(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vue/compiler-sfc': 3.5.22 - ast-kit: 2.1.3 + '@vue/compiler-sfc': 3.5.24 + ast-kit: 2.2.0 local-pkg: 1.1.2 magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@vue/babel-helper-vue-transform-on@1.5.0': {} @@ -10024,7 +9828,7 @@ snapshots: '@babel/types': 7.28.5 '@vue/babel-helper-vue-transform-on': 1.5.0 '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5) - '@vue/shared': 3.5.22 + '@vue/shared': 3.5.24 optionalDependencies: '@babel/core': 7.28.5 transitivePeerDependencies: @@ -10037,39 +9841,39 @@ snapshots: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/parser': 7.28.5 - '@vue/compiler-sfc': 3.5.22 + '@vue/compiler-sfc': 3.5.24 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.22': + '@vue/compiler-core@3.5.24': dependencies: '@babel/parser': 7.28.5 - '@vue/shared': 3.5.22 + '@vue/shared': 3.5.24 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.22': + '@vue/compiler-dom@3.5.24': dependencies: - '@vue/compiler-core': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-core': 3.5.24 + '@vue/shared': 3.5.24 - '@vue/compiler-sfc@3.5.22': + '@vue/compiler-sfc@3.5.24': dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.22 - '@vue/compiler-dom': 3.5.22 - '@vue/compiler-ssr': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-core': 3.5.24 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.22': + '@vue/compiler-ssr@3.5.24': dependencies: - '@vue/compiler-dom': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/compiler-dom': 3.5.24 + '@vue/shared': 3.5.24 '@vue/compiler-vue2@2.7.16': dependencies: @@ -10078,38 +9882,38 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.7.7(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))': + '@vue/devtools-core@8.0.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vue/devtools-kit': 7.7.7 - '@vue/devtools-shared': 7.7.7 + '@vue/devtools-kit': 8.0.3 + '@vue/devtools-shared': 8.0.3 mitt: 3.0.1 nanoid: 5.1.6 pathe: 2.0.3 - vite-hot-client: 2.1.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - vue: 3.5.22(typescript@5.9.3) + vite-hot-client: 2.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - vite - '@vue/devtools-kit@7.7.7': + '@vue/devtools-kit@8.0.3': dependencies: - '@vue/devtools-shared': 7.7.7 - birpc: 2.6.1 + '@vue/devtools-shared': 8.0.3 + birpc: 2.8.0 hookable: 5.5.3 mitt: 3.0.1 - perfect-debounce: 1.0.0 + perfect-debounce: 2.0.0 speakingurl: 14.0.1 superjson: 2.2.5 - '@vue/devtools-shared@7.7.7': + '@vue/devtools-shared@8.0.3': dependencies: rfdc: 1.4.1 '@vue/language-core@2.2.0(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.22 + '@vue/compiler-dom': 3.5.24 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.22 + '@vue/shared': 3.5.24 alien-signals: 0.4.14 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -10117,60 +9921,48 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/language-core@3.1.2(typescript@5.9.3)': - dependencies: - '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.22 - '@vue/shared': 3.5.22 - alien-signals: 3.0.3 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - picomatch: 4.0.3 - optionalDependencies: - typescript: 5.9.3 - '@vue/language-core@3.1.3(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.22 - '@vue/shared': 3.5.22 - alien-signals: 3.0.3 + '@vue/compiler-dom': 3.5.24 + '@vue/shared': 3.5.24 + alien-signals: 3.1.0 muggle-string: 0.4.1 path-browserify: 1.0.1 picomatch: 4.0.3 optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.22': + '@vue/reactivity@3.5.24': dependencies: - '@vue/shared': 3.5.22 + '@vue/shared': 3.5.24 - '@vue/runtime-core@3.5.22': + '@vue/runtime-core@3.5.24': dependencies: - '@vue/reactivity': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/reactivity': 3.5.24 + '@vue/shared': 3.5.24 - '@vue/runtime-dom@3.5.22': + '@vue/runtime-dom@3.5.24': dependencies: - '@vue/reactivity': 3.5.22 - '@vue/runtime-core': 3.5.22 - '@vue/shared': 3.5.22 + '@vue/reactivity': 3.5.24 + '@vue/runtime-core': 3.5.24 + '@vue/shared': 3.5.24 csstype: 3.1.3 - '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.3))': + '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.22 - '@vue/shared': 3.5.22 - vue: 3.5.22(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + vue: 3.5.24(typescript@5.9.3) - '@vue/shared@3.5.22': {} + '@vue/shared@3.5.24': {} - '@vueuse/core@10.11.1(vue@3.5.22(typescript@5.9.3))': + '@vueuse/core@10.11.1(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.22(typescript@5.9.3)) - vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3)) + '@vueuse/shared': 10.11.1(vue@3.5.24(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -10180,22 +9972,22 @@ snapshots: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))': + '@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 13.9.0 - '@vueuse/shared': 13.9.0(vue@3.5.22(typescript@5.9.3)) - vue: 3.5.22(typescript@5.9.3) + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) - '@vueuse/integrations@13.9.0(change-case@5.4.4)(fuse.js@7.1.0)(idb-keyval@6.2.2)(vue@3.5.22(typescript@5.9.3))': + '@vueuse/integrations@13.9.0(change-case@5.4.4)(fuse.js@7.1.0)(idb-keyval@6.2.2)(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) - '@vueuse/shared': 13.9.0(vue@3.5.22(typescript@5.9.3)) - vue: 3.5.22(typescript@5.9.3) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: change-case: 5.4.4 fuse.js: 7.1.0 @@ -10207,22 +9999,22 @@ snapshots: '@vueuse/metadata@13.9.0': {} - '@vueuse/shared@10.11.1(vue@3.5.22(typescript@5.9.3))': + '@vueuse/shared@10.11.1(vue@3.5.24(typescript@5.9.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/shared@13.9.0(vue@3.5.22(typescript@5.9.3))': + '@vueuse/shared@13.9.0(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@webcontainer/env@1.1.1': {} @@ -10246,11 +10038,11 @@ snapshots: agent-base@7.1.4: {} - ai@5.0.81(zod@4.1.12): + ai@5.0.92(zod@4.1.12): dependencies: - '@ai-sdk/gateway': 2.0.2(zod@4.1.12) + '@ai-sdk/gateway': 2.0.8(zod@4.1.12) '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.13(zod@4.1.12) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.12) '@opentelemetry/api': 1.9.0 zod: 4.1.12 @@ -10285,7 +10077,7 @@ snapshots: alien-signals@0.4.14: {} - alien-signals@3.0.3: {} + alien-signals@3.1.0: {} ansi-regex@5.0.1: {} @@ -10343,7 +10135,7 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@2.1.3: + ast-kit@2.2.0: dependencies: '@babel/parser': 7.28.5 pathe: 2.0.3 @@ -10355,7 +10147,7 @@ snapshots: ast-walker-scope@0.8.3: dependencies: '@babel/parser': 7.28.5 - ast-kit: 2.1.3 + ast-kit: 2.2.0 async-retry@1.3.3: dependencies: @@ -10365,11 +10157,11 @@ snapshots: async@3.2.6: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001751 - fraction.js: 4.3.7 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001754 + fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 @@ -10381,14 +10173,14 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.1: {} + bare-events@2.8.2: {} - bare-fs@4.5.0: + bare-fs@4.5.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.8.1) - bare-url: 2.3.1 + bare-stream: 2.7.0(bare-events@2.8.2) + bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller @@ -10403,17 +10195,17 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.8.1): + bare-stream@2.7.0(bare-events@2.8.2): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a optional: true - bare-url@2.3.1: + bare-url@2.3.2: dependencies: bare-path: 3.0.0 optional: true @@ -10422,7 +10214,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.20: {} + baseline-browser-mapping@2.8.26: {} basic-ftp@5.0.5: {} @@ -10437,7 +10229,7 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - birpc@2.6.1: {} + birpc@2.8.0: {} bl@4.1.0: dependencies: @@ -10466,13 +10258,13 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.27.0: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.20 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.241 - node-releases: 2.0.26 - update-browserslist-db: 1.1.4(browserslist@4.27.0) + baseline-browser-mapping: 2.8.26 + caniuse-lite: 1.0.30001754 + electron-to-chromium: 1.5.250 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) buffer-crc32@1.0.0: {} @@ -10494,13 +10286,13 @@ snapshots: dependencies: run-applescript: 7.1.0 - c12@3.3.1(magicast@0.3.5): + c12@3.3.1: dependencies: chokidar: 4.0.3 confbox: 0.2.2 defu: 6.1.4 dotenv: 17.2.3 - exsolve: 1.0.7 + exsolve: 1.0.8 giget: 2.0.0 jiti: 2.6.1 ohash: 2.0.11 @@ -10508,16 +10300,14 @@ snapshots: perfect-debounce: 2.0.0 pkg-types: 2.3.0 rc9: 2.1.2 - optionalDependencies: - magicast: 0.3.5 - c12@3.3.1(magicast@0.5.0): + c12@3.3.2(magicast@0.5.1): dependencies: chokidar: 4.0.3 confbox: 0.2.2 defu: 6.1.4 dotenv: 17.2.3 - exsolve: 1.0.7 + exsolve: 1.0.8 giget: 2.0.0 jiti: 2.6.1 ohash: 2.0.11 @@ -10526,7 +10316,7 @@ snapshots: pkg-types: 2.3.0 rc9: 2.1.2 optionalDependencies: - magicast: 0.5.0 + magicast: 0.5.1 cac@6.7.14: {} @@ -10536,12 +10326,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001751 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001754 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001751: {} + caniuse-lite@1.0.30001754: {} ccount@2.0.1: {} @@ -10586,7 +10376,7 @@ snapshots: chrome-launcher@1.2.1: dependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.2 @@ -10617,13 +10407,6 @@ snapshots: is-wsl: 3.1.0 is64bit: 2.0.0 - clipboardy@5.0.0: - dependencies: - execa: 9.6.0 - is-wayland: 0.1.0 - is-wsl: 3.1.0 - is64bit: 2.0.0 - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -10785,15 +10568,17 @@ snapshots: cookie-es@2.0.0: {} - cookie@1.0.2: {} - copy-anything@4.0.5: dependencies: is-what: 5.5.0 + copy-paste@2.2.0: + dependencies: + iconv-lite: 0.4.24 + core-js-compat@3.46.0: dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 core-util-is@1.0.3: {} @@ -10871,24 +10656,24 @@ snapshots: cssfilter@0.0.10: optional: true - cssnano-preset-default@7.0.9(postcss@8.5.6): + cssnano-preset-default@7.0.10(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 css-declaration-sorter: 7.3.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 10.1.1(postcss@8.5.6) - postcss-colormin: 7.0.4(postcss@8.5.6) - postcss-convert-values: 7.0.7(postcss@8.5.6) - postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-colormin: 7.0.5(postcss@8.5.6) + postcss-convert-values: 7.0.8(postcss@8.5.6) + postcss-discard-comments: 7.0.5(postcss@8.5.6) postcss-discard-duplicates: 7.0.2(postcss@8.5.6) postcss-discard-empty: 7.0.1(postcss@8.5.6) postcss-discard-overridden: 7.0.1(postcss@8.5.6) postcss-merge-longhand: 7.0.5(postcss@8.5.6) - postcss-merge-rules: 7.0.6(postcss@8.5.6) + postcss-merge-rules: 7.0.7(postcss@8.5.6) postcss-minify-font-values: 7.0.1(postcss@8.5.6) postcss-minify-gradients: 7.0.1(postcss@8.5.6) - postcss-minify-params: 7.0.4(postcss@8.5.6) + postcss-minify-params: 7.0.5(postcss@8.5.6) postcss-minify-selectors: 7.0.5(postcss@8.5.6) postcss-normalize-charset: 7.0.1(postcss@8.5.6) postcss-normalize-display-values: 7.0.1(postcss@8.5.6) @@ -10896,11 +10681,11 @@ snapshots: postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) postcss-normalize-string: 7.0.1(postcss@8.5.6) postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) - postcss-normalize-unicode: 7.0.4(postcss@8.5.6) + postcss-normalize-unicode: 7.0.5(postcss@8.5.6) postcss-normalize-url: 7.0.1(postcss@8.5.6) postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) postcss-ordered-values: 7.0.2(postcss@8.5.6) - postcss-reduce-initial: 7.0.4(postcss@8.5.6) + postcss-reduce-initial: 7.0.5(postcss@8.5.6) postcss-reduce-transforms: 7.0.1(postcss@8.5.6) postcss-svgo: 7.1.0(postcss@8.5.6) postcss-unique-selectors: 7.0.4(postcss@8.5.6) @@ -10909,9 +10694,9 @@ snapshots: dependencies: postcss: 8.5.6 - cssnano@7.1.1(postcss@8.5.6): + cssnano@7.1.2(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.9(postcss@8.5.6) + cssnano-preset-default: 7.0.10(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 @@ -10955,7 +10740,7 @@ snapshots: default-browser-id@5.0.0: {} - default-browser@5.2.1: + default-browser@5.3.0: dependencies: bundle-name: 4.1.0 default-browser-id: 5.0.0 @@ -10996,31 +10781,31 @@ snapshots: diff@8.0.2: {} - docus@5.2.1(98b70214e17197e9487d2d5efeebcd8f): + docus@5.2.1(9b58943e116e8343a25ebf63a38b8a7a): dependencies: - '@iconify-json/lucide': 1.2.71 - '@iconify-json/simple-icons': 1.2.56 + '@iconify-json/lucide': 1.2.73 + '@iconify-json/simple-icons': 1.2.58 '@iconify-json/vscode-icons': 1.2.33 - '@nuxt/content': 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.0) - '@nuxt/image': 1.11.0(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0) - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@nuxt/ui': 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(zod@4.1.12) - '@nuxtjs/i18n': 10.1.2(@vue/compiler-dom@3.5.22)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(rollup@4.52.5)(vue@3.5.22(typescript@5.9.3)) - '@nuxtjs/mdc': 0.18.0(magicast@0.5.0) - '@nuxtjs/robots': 5.5.6(h3@1.15.4)(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)) - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) + '@nuxt/content': 3.8.0(better-sqlite3@12.4.1)(magicast@0.5.1) + '@nuxt/image': 1.11.0(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1) + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@nuxt/ui': 4.1.0(@babel/parser@7.28.5)(change-case@5.4.4)(db0@0.3.4(better-sqlite3@12.4.1))(embla-carousel@8.6.0)(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))(zod@4.1.12) + '@nuxtjs/i18n': 10.2.0(@vue/compiler-dom@3.5.24)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.1)(rollup@4.53.2)(vue@3.5.24(typescript@5.9.3)) + '@nuxtjs/mdc': https://pkg.pr.new/@nuxtjs/mdc@cb6a227(magicast@0.5.1) + '@nuxtjs/robots': 5.5.6(h3@1.15.4)(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) better-sqlite3: 12.4.1 defu: 6.1.4 - exsolve: 1.0.7 + exsolve: 1.0.8 git-url-parse: 16.1.0 minimark: 0.2.0 - motion-v: 1.7.4(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - nuxt: 4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) - nuxt-llms: 0.1.3(magicast@0.5.0) - nuxt-og-image: 5.1.12(@unhead/vue@2.0.19(vue@3.5.22(typescript@5.9.3)))(h3@1.15.4)(magicast@0.5.0)(unstorage@1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2))(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) + motion-v: 1.7.4(@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1) + nuxt-llms: 0.1.3(magicast@0.5.1) + nuxt-og-image: 5.1.12(@unhead/vue@2.0.19(vue@3.5.24(typescript@5.9.3)))(h3@1.15.4)(magicast@0.5.1)(unstorage@1.17.2(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) pkg-types: 2.3.0 scule: 1.3.0 - tailwindcss: 4.1.16 + tailwindcss: 4.1.17 ufo: 1.6.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -11110,7 +10895,7 @@ snapshots: dot-prop@10.1.0: dependencies: - type-fest: 5.1.0 + type-fest: 5.2.0 dot-prop@5.3.0: dependencies: @@ -11126,7 +10911,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.241: {} + electron-to-chromium@1.5.250: {} embla-carousel-auto-height@8.6.0(embla-carousel@8.6.0): dependencies: @@ -11152,11 +10937,11 @@ snapshots: dependencies: embla-carousel: 8.6.0 - embla-carousel-vue@8.6.0(vue@3.5.22(typescript@5.9.3)): + embla-carousel-vue@8.6.0(vue@3.5.24(typescript@5.9.3)): dependencies: embla-carousel: 8.6.0 embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) embla-carousel-wheel-gestures@8.1.0(embla-carousel@8.6.0): dependencies: @@ -11210,34 +10995,34 @@ snapshots: es-module-lexer@1.7.0: {} - esbuild@0.25.11: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 escalade@3.2.0: {} @@ -11259,7 +11044,7 @@ snapshots: eslint-config-flat-gitignore@2.1.0(eslint@9.39.1(jiti@2.6.1)): dependencies: - '@eslint/compat': 1.4.0(eslint@9.39.1(jiti@2.6.1)) + '@eslint/compat': 1.4.1(eslint@9.39.1(jiti@2.6.1)) eslint: 9.39.1(jiti@2.6.1) eslint-flat-config-utils@2.1.4: @@ -11280,29 +11065,29 @@ snapshots: eslint-plugin-import-lite@0.3.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.4 eslint: 9.39.1(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)): dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.46.4 comment-parser: 1.4.1 debug: 4.4.3 eslint: 9.39.1(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 - minimatch: 10.0.3 + minimatch: 10.1.1 semver: 7.7.3 stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-plugin-jsdoc@61.1.12(eslint@9.39.1(jiti@2.6.1)): + eslint-plugin-jsdoc@61.2.0(eslint@9.39.1(jiti@2.6.1)): dependencies: '@es-joy/jsdoccomment': 0.76.0 '@es-joy/resolve.exports': 1.2.0 @@ -11337,7 +11122,7 @@ snapshots: dependencies: '@babel/helper-validator-identifier': 7.28.5 '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@eslint/plugin-kit': 0.4.0 + '@eslint/plugin-kit': 0.4.1 change-case: 5.4.4 ci-info: 4.3.1 clean-regexp: 1.0.0 @@ -11345,7 +11130,7 @@ snapshots: eslint: 9.39.1(jiti@2.6.1) esquery: 1.6.0 find-up-simple: 1.0.1 - globals: 16.4.0 + globals: 16.5.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 jsesc: 3.1.0 @@ -11355,7 +11140,7 @@ snapshots: semver: 7.7.3 strip-indent: 4.1.1 - eslint-plugin-vue@10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))): + eslint-plugin-vue@10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) eslint: 9.39.1(jiti@2.6.1) @@ -11367,11 +11152,11 @@ snapshots: xml-name-validator: 4.0.0 optionalDependencies: '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1(jiti@2.6.1)) - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.22)(eslint@9.39.1(jiti@2.6.1)): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.24)(eslint@9.39.1(jiti@2.6.1)): dependencies: - '@vue/compiler-sfc': 3.5.22 + '@vue/compiler-sfc': 3.5.24 eslint: 9.39.1(jiti@2.6.1) eslint-scope@8.4.0: @@ -11464,7 +11249,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller @@ -11503,7 +11288,7 @@ snapshots: expect-type@1.2.2: {} - exsolve@1.0.7: {} + exsolve@1.0.8: {} extend@3.0.2: {} @@ -11562,7 +11347,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.52.5 + rollup: 4.53.2 flat-cache@4.0.1: dependencies: @@ -11575,7 +11360,7 @@ snapshots: fontaine@0.6.0: dependencies: - '@capsizecss/metrics': 3.5.0 + '@capsizecss/metrics': 3.6.1 '@capsizecss/unpack': 2.4.0 css-tree: 3.1.0 magic-regexp: 0.10.0 @@ -11603,7 +11388,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} framer-motion@12.23.12: dependencies: @@ -11718,7 +11503,7 @@ snapshots: globals@15.15.0: {} - globals@16.4.0: {} + globals@16.5.0: {} globby@15.0.0: dependencies: @@ -11954,6 +11739,10 @@ snapshots: human-signals@8.0.1: {} + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 @@ -11979,7 +11768,7 @@ snapshots: impound@1.0.0: dependencies: - exsolve: 1.0.7 + exsolve: 1.0.8 mocked-exports: 0.1.1 pathe: 2.0.3 unplugin: 2.3.10 @@ -11997,17 +11786,17 @@ snapshots: ini@4.1.1: {} - inquirer@12.9.6(@types/node@24.9.1): + inquirer@12.9.6(@types/node@24.10.1): dependencies: - '@inquirer/ansi': 1.0.1 - '@inquirer/core': 10.3.0(@types/node@24.9.1) - '@inquirer/prompts': 7.9.0(@types/node@24.9.1) - '@inquirer/type': 3.0.9(@types/node@24.9.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.1(@types/node@24.10.1) + '@inquirer/prompts': 7.10.0(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) mute-stream: 2.0.0 run-async: 4.0.6 rxjs: 7.8.2 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 ioredis@5.8.2: dependencies: @@ -12023,7 +11812,7 @@ snapshots: transitivePeerDependencies: - supports-color - ip-address@10.0.1: {} + ip-address@10.1.0: {} ipx@2.1.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2): dependencies: @@ -12143,8 +11932,6 @@ snapshots: is-unicode-supported@2.1.0: {} - is-wayland@0.1.0: {} - is-what@5.5.0: {} is-wsl@2.2.0: @@ -12423,13 +12210,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - source-map-js: 1.2.1 - - magicast@0.5.0: + magicast@0.5.1: dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 @@ -12784,6 +12565,10 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.0 + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -12808,13 +12593,13 @@ snapshots: mkdirp-classic@0.5.3: {} - mkdist@2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)): + mkdist@2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)): dependencies: - autoprefixer: 10.4.21(postcss@8.5.6) + autoprefixer: 10.4.22(postcss@8.5.6) citty: 0.1.6 - cssnano: 7.1.1(postcss@8.5.6) + cssnano: 7.1.2(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 jiti: 1.21.7 mlly: 1.8.0 pathe: 2.0.3 @@ -12825,8 +12610,8 @@ snapshots: tinyglobby: 0.2.15 optionalDependencies: typescript: 5.9.3 - vue: 3.5.22(typescript@5.9.3) - vue-sfc-transformer: 0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vue-sfc-transformer: 0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)) vue-tsc: 3.1.3(typescript@5.9.3) mlly@1.8.0: @@ -12850,13 +12635,13 @@ snapshots: motion-utils@12.23.6: {} - motion-v@1.7.4(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)): + motion-v@1.7.4(@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) framer-motion: 12.23.12 hey-listen: 1.0.8 motion-dom: 12.23.12 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - '@emotion/is-prop-valid' - react @@ -12870,6 +12655,8 @@ snapshots: mute-stream@2.0.0: {} + mute-stream@3.0.0: {} + nanoid@3.3.11: {} nanoid@5.1.6: {} @@ -12893,16 +12680,16 @@ snapshots: nitropack@2.12.9(better-sqlite3@12.4.1)(idb-keyval@6.2.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.5) - '@rollup/plugin-inject': 5.0.5(rollup@4.52.5) - '@rollup/plugin-json': 6.1.0(rollup@4.52.5) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.52.5) - '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) - '@rollup/plugin-terser': 0.4.4(rollup@4.52.5) - '@vercel/nft': 0.30.3(rollup@4.52.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.53.2) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.53.2) + '@rollup/plugin-json': 6.1.0(rollup@4.53.2) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.2) + '@rollup/plugin-replace': 6.0.3(rollup@4.53.2) + '@rollup/plugin-terser': 0.4.4(rollup@4.53.2) + '@vercel/nft': 0.30.3(rollup@4.53.2) archiver: 7.0.1 - c12: 3.3.1(magicast@0.5.0) + c12: 3.3.2(magicast@0.5.1) chokidar: 4.0.3 citty: 0.1.6 compatx: 0.2.0 @@ -12915,10 +12702,10 @@ snapshots: defu: 6.1.4 destr: 2.0.5 dot-prop: 10.1.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 etag: 1.8.1 - exsolve: 1.0.7 + exsolve: 1.0.8 globby: 15.0.0 gzip-size: 7.0.0 h3: 1.15.4 @@ -12930,7 +12717,7 @@ snapshots: knitwork: 1.2.0 listhen: 1.9.0 magic-string: 0.30.21 - magicast: 0.5.0 + magicast: 0.5.1 mime: 4.1.0 mlly: 1.8.0 node-fetch-native: 1.6.7 @@ -12942,8 +12729,8 @@ snapshots: pkg-types: 2.3.0 pretty-bytes: 7.1.0 radix3: 1.1.2 - rollup: 4.52.5 - rollup-plugin-visualizer: 6.0.5(rollup@4.52.5) + rollup: 4.53.2 + rollup-plugin-visualizer: 6.0.5(rollup@4.53.2) scule: 1.3.0 semver: 7.7.3 serve-placeholder: 2.0.2 @@ -12954,13 +12741,13 @@ snapshots: ultrahtml: 1.6.0 uncrypto: 0.1.3 unctx: 2.4.1 - unenv: 2.0.0-rc.23 + unenv: 2.0.0-rc.24 unimport: 5.5.0 unplugin-utils: 0.3.1 unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) untyped: 2.0.0 unwasm: 0.3.11 - youch: 4.1.0-beta.11 + youch: 4.1.0-beta.12 youch-core: 0.3.3 transitivePeerDependencies: - '@azure/app-configuration' @@ -12992,7 +12779,7 @@ snapshots: - supports-color - uploadthing - node-abi@3.78.0: + node-abi@3.80.0: dependencies: semver: 7.7.3 @@ -13020,7 +12807,7 @@ snapshots: node-mock-http@1.0.3: {} - node-releases@2.0.26: {} + node-releases@2.0.27: {} nopt@8.1.0: dependencies: @@ -13049,23 +12836,9 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxt-component-meta@https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.3.5): - dependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - citty: 0.1.6 - json-schema-to-zod: 2.6.1 - mlly: 1.8.0 - ohash: 2.0.11 - scule: 1.3.0 - typescript: 5.9.3 - ufo: 1.6.1 - vue-component-meta: 3.1.2(typescript@5.9.3) - transitivePeerDependencies: - - magicast - - nuxt-component-meta@https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.5.0): + nuxt-component-meta@https://pkg.pr.new/nuxt-component-meta@e3eb2c4(magicast@0.5.1): dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) citty: 0.1.6 json-schema-to-zod: 2.6.1 mlly: 1.8.0 @@ -13073,27 +12846,27 @@ snapshots: scule: 1.3.0 typescript: 5.9.3 ufo: 1.6.1 - vue-component-meta: 3.1.2(typescript@5.9.3) + vue-component-meta: 3.1.3(typescript@5.9.3) transitivePeerDependencies: - magicast nuxt-define@1.0.0: {} - nuxt-llms@0.1.3(magicast@0.5.0): + nuxt-llms@0.1.3(magicast@0.5.1): dependencies: - '@nuxt/kit': 3.20.0(magicast@0.5.0) + '@nuxt/kit': 3.20.1(magicast@0.5.1) transitivePeerDependencies: - magicast - nuxt-og-image@5.1.12(@unhead/vue@2.0.19(vue@3.5.22(typescript@5.9.3)))(h3@1.15.4)(magicast@0.5.0)(unstorage@1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2))(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)): + nuxt-og-image@5.1.12(@unhead/vue@2.0.19(vue@3.5.24(typescript@5.9.3)))(h3@1.15.4)(magicast@0.5.1)(unstorage@1.17.2(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@nuxt/devtools-kit': 2.7.0(magicast@0.5.0)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/devtools-kit': 2.7.0(magicast@0.5.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) + '@nuxt/kit': 4.2.1(magicast@0.5.1) '@resvg/resvg-js': 2.6.2 '@resvg/resvg-wasm': 2.6.2 - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@unocss/core': 66.5.4 - '@unocss/preset-wind3': 66.5.4 + '@unhead/vue': 2.0.19(vue@3.5.24(typescript@5.9.3)) + '@unocss/core': 66.5.6 + '@unocss/preset-wind3': 66.5.6 chrome-launcher: 1.2.1 consola: 3.4.2 defu: 6.1.4 @@ -13101,7 +12874,7 @@ snapshots: image-size: 2.0.2 magic-string: 0.30.21 mocked-exports: 0.1.1 - nuxt-site-config: 3.2.11(h3@1.15.4)(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)) + nuxt-site-config: 3.2.11(h3@1.15.4)(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)) nypm: 0.6.2 ofetch: 1.5.1 ohash: 2.0.11 @@ -13116,7 +12889,7 @@ snapshots: strip-literal: 3.1.0 ufo: 1.6.1 unplugin: 2.3.10 - unstorage: 1.17.1(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) + unstorage: 1.17.2(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2) unwasm: 0.3.11 yoga-wasm-web: 0.3.3 transitivePeerDependencies: @@ -13126,164 +12899,44 @@ snapshots: - vite - vue - nuxt-site-config-kit@3.2.11(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)): + nuxt-site-config-kit@3.2.11(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)): dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) pkg-types: 2.3.0 - site-config-stack: 3.2.11(vue@3.5.22(typescript@5.9.3)) + site-config-stack: 3.2.11(vue@3.5.24(typescript@5.9.3)) std-env: 3.10.0 ufo: 1.6.1 transitivePeerDependencies: - magicast - vue - nuxt-site-config@3.2.11(h3@1.15.4)(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)): + nuxt-site-config@3.2.11(h3@1.15.4)(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)): dependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) h3: 1.15.4 - nuxt-site-config-kit: 3.2.11(magicast@0.5.0)(vue@3.5.22(typescript@5.9.3)) + nuxt-site-config-kit: 3.2.11(magicast@0.5.1)(vue@3.5.24(typescript@5.9.3)) pathe: 2.0.3 pkg-types: 2.3.0 sirv: 3.0.2 - site-config-stack: 3.2.11(vue@3.5.22(typescript@5.9.3)) + site-config-stack: 3.2.11(vue@3.5.24(typescript@5.9.3)) ufo: 1.6.1 transitivePeerDependencies: - magicast - vue - nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1): - dependencies: - '@dxup/nuxt': 0.2.0(magicast@0.3.5) - '@nuxt/cli': 3.29.3(magicast@0.3.5) - '@nuxt/devtools': 2.7.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@nuxt/nitro-server': 4.2.0(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.3.5)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(typescript@5.9.3) - '@nuxt/schema': 4.2.0 - '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 4.2.0(@types/node@24.9.1)(eslint@9.39.1(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.3.5)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3))(yaml@2.8.1) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vue/shared': 3.5.22 - c12: 3.3.1(magicast@0.3.5) - chokidar: 4.0.3 - compatx: 0.2.0 - consola: 3.4.2 - cookie-es: 2.0.0 - defu: 6.1.4 - destr: 2.0.5 - devalue: 5.4.2 - errx: 0.1.0 - escape-string-regexp: 5.0.0 - exsolve: 1.0.7 - h3: 1.15.4 - hookable: 5.5.3 - ignore: 7.0.5 - impound: 1.0.0 - jiti: 2.6.1 - klona: 2.0.6 - knitwork: 1.2.0 - magic-string: 0.30.21 - mlly: 1.8.0 - nanotar: 0.2.0 - nypm: 0.6.2 - ofetch: 1.5.0 - ohash: 2.0.11 - on-change: 6.0.1 - oxc-minify: 0.95.0 - oxc-parser: 0.95.0 - oxc-transform: 0.95.0 - oxc-walker: 0.5.2(oxc-parser@0.95.0) - pathe: 2.0.3 - perfect-debounce: 2.0.0 - pkg-types: 2.3.0 - radix3: 1.1.2 - scule: 1.3.0 - semver: 7.7.3 - std-env: 3.10.0 - tinyglobby: 0.2.15 - ufo: 1.6.1 - ultrahtml: 1.6.0 - uncrypto: 0.1.3 - unctx: 2.4.1 - unimport: 5.5.0 - unplugin: 2.3.10 - unplugin-vue-router: 0.16.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) - untyped: 2.0.0 - vue: 3.5.22(typescript@5.9.3) - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) - optionalDependencies: - '@parcel/watcher': 2.5.1 - '@types/node': 24.9.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@biomejs/biome' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - '@vue/compiler-sfc' - - aws4fetch - - bare-abort-controller - - better-sqlite3 - - bufferutil - - db0 - - drizzle-orm - - encoding - - eslint - - idb-keyval - - ioredis - - less - - lightningcss - - magicast - - meow - - mysql2 - - optionator - - oxlint - - react-native-b4a - - rolldown - - rollup - - sass - - sass-embedded - - sqlite3 - - stylelint - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - uploadthing - - utf-8-validate - - vite - - vls - - vti - - vue-tsc - - xml2js - - yaml - - nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1): - dependencies: - '@dxup/nuxt': 0.2.0(magicast@0.5.0) - '@nuxt/cli': 3.29.3(magicast@0.5.0) - '@nuxt/devtools': 2.7.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)) - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@nuxt/nitro-server': 4.2.0(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(magicast@0.5.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(typescript@5.9.3) - '@nuxt/schema': 4.2.0 - '@nuxt/telemetry': 2.6.6(magicast@0.5.0) - '@nuxt/vite-builder': 4.2.0(@types/node@24.9.1)(eslint@9.39.1(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(nuxt@4.2.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(@vue/compiler-sfc@3.5.22)(better-sqlite3@12.4.1)(db0@0.3.4(better-sqlite3@12.4.1))(eslint@9.39.1(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.0)(meow@13.2.0)(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.5)(terser@5.44.0)(typescript@5.9.3)(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3))(yaml@2.8.1) - '@unhead/vue': 2.0.19(vue@3.5.22(typescript@5.9.3)) - '@vue/shared': 3.5.22 - c12: 3.3.1(magicast@0.5.0) + 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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1): + dependencies: + '@dxup/nuxt': 0.2.1(magicast@0.5.1) + '@nuxt/cli': 3.30.0(magicast@0.5.1) + '@nuxt/devtools': 3.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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))(idb-keyval@6.2.2)(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(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(@types/node@24.10.1)(eslint@9.39.1(jiti@2.6.1))(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(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))(idb-keyval@6.2.2)(ioredis@5.8.2)(lightningcss@1.30.2)(magicast@0.5.1)(meow@13.2.0)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.1.3(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) chokidar: 4.0.3 compatx: 0.2.0 consola: 3.4.2 @@ -13293,7 +12946,7 @@ snapshots: devalue: 5.4.2 errx: 0.1.0 escape-string-regexp: 5.0.0 - exsolve: 1.0.7 + exsolve: 1.0.8 h3: 1.15.4 hookable: 5.5.3 ignore: 7.0.5 @@ -13305,13 +12958,13 @@ snapshots: mlly: 1.8.0 nanotar: 0.2.0 nypm: 0.6.2 - ofetch: 1.5.0 + ofetch: 1.5.1 ohash: 2.0.11 on-change: 6.0.1 - oxc-minify: 0.95.0 - oxc-parser: 0.95.0 - oxc-transform: 0.95.0 - oxc-walker: 0.5.2(oxc-parser@0.95.0) + oxc-minify: 0.96.0 + oxc-parser: 0.96.0 + oxc-transform: 0.96.0 + oxc-walker: 0.5.2(oxc-parser@0.96.0) pathe: 2.0.3 perfect-debounce: 2.0.0 pkg-types: 2.3.0 @@ -13326,13 +12979,13 @@ snapshots: unctx: 2.4.1 unimport: 5.5.0 unplugin: 2.3.10 - unplugin-vue-router: 0.16.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)) + unplugin-vue-router: 0.16.1(@vue/compiler-sfc@3.5.24)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) untyped: 2.0.0 - vue: 3.5.22(typescript@5.9.3) - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3)) optionalDependencies: '@parcel/watcher': 2.5.1 - '@types/node': 24.9.1 + '@types/node': 24.10.1 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13351,6 +13004,7 @@ snapshots: - '@vercel/blob' - '@vercel/functions' - '@vercel/kv' + - '@vitejs/devtools' - '@vue/compiler-sfc' - aws4fetch - bare-abort-controller @@ -13397,16 +13051,10 @@ snapshots: consola: 3.4.2 pathe: 2.0.3 pkg-types: 2.3.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 object-deep-merge@2.0.0: {} - ofetch@1.5.0: - dependencies: - destr: 2.0.5 - node-fetch-native: 1.6.7 - ufo: 1.6.1 - ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -13443,7 +13091,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.3.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -13480,23 +13128,23 @@ snapshots: macos-release: 3.4.0 windows-release: 6.1.0 - oxc-minify@0.95.0: + oxc-minify@0.96.0: optionalDependencies: - '@oxc-minify/binding-android-arm64': 0.95.0 - '@oxc-minify/binding-darwin-arm64': 0.95.0 - '@oxc-minify/binding-darwin-x64': 0.95.0 - '@oxc-minify/binding-freebsd-x64': 0.95.0 - '@oxc-minify/binding-linux-arm-gnueabihf': 0.95.0 - '@oxc-minify/binding-linux-arm-musleabihf': 0.95.0 - '@oxc-minify/binding-linux-arm64-gnu': 0.95.0 - '@oxc-minify/binding-linux-arm64-musl': 0.95.0 - '@oxc-minify/binding-linux-riscv64-gnu': 0.95.0 - '@oxc-minify/binding-linux-s390x-gnu': 0.95.0 - '@oxc-minify/binding-linux-x64-gnu': 0.95.0 - '@oxc-minify/binding-linux-x64-musl': 0.95.0 - '@oxc-minify/binding-wasm32-wasi': 0.95.0 - '@oxc-minify/binding-win32-arm64-msvc': 0.95.0 - '@oxc-minify/binding-win32-x64-msvc': 0.95.0 + '@oxc-minify/binding-android-arm64': 0.96.0 + '@oxc-minify/binding-darwin-arm64': 0.96.0 + '@oxc-minify/binding-darwin-x64': 0.96.0 + '@oxc-minify/binding-freebsd-x64': 0.96.0 + '@oxc-minify/binding-linux-arm-gnueabihf': 0.96.0 + '@oxc-minify/binding-linux-arm-musleabihf': 0.96.0 + '@oxc-minify/binding-linux-arm64-gnu': 0.96.0 + '@oxc-minify/binding-linux-arm64-musl': 0.96.0 + '@oxc-minify/binding-linux-riscv64-gnu': 0.96.0 + '@oxc-minify/binding-linux-s390x-gnu': 0.96.0 + '@oxc-minify/binding-linux-x64-gnu': 0.96.0 + '@oxc-minify/binding-linux-x64-musl': 0.96.0 + '@oxc-minify/binding-wasm32-wasi': 0.96.0 + '@oxc-minify/binding-win32-arm64-msvc': 0.96.0 + '@oxc-minify/binding-win32-x64-msvc': 0.96.0 oxc-parser@0.95.0: dependencies: @@ -13518,6 +13166,26 @@ snapshots: '@oxc-parser/binding-win32-arm64-msvc': 0.95.0 '@oxc-parser/binding-win32-x64-msvc': 0.95.0 + oxc-parser@0.96.0: + dependencies: + '@oxc-project/types': 0.96.0 + optionalDependencies: + '@oxc-parser/binding-android-arm64': 0.96.0 + '@oxc-parser/binding-darwin-arm64': 0.96.0 + '@oxc-parser/binding-darwin-x64': 0.96.0 + '@oxc-parser/binding-freebsd-x64': 0.96.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.96.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.96.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.96.0 + '@oxc-parser/binding-linux-arm64-musl': 0.96.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.96.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.96.0 + '@oxc-parser/binding-linux-x64-gnu': 0.96.0 + '@oxc-parser/binding-linux-x64-musl': 0.96.0 + '@oxc-parser/binding-wasm32-wasi': 0.96.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.96.0 + '@oxc-parser/binding-win32-x64-msvc': 0.96.0 + oxc-transform@0.95.0: optionalDependencies: '@oxc-transform/binding-android-arm64': 0.95.0 @@ -13536,11 +13204,34 @@ snapshots: '@oxc-transform/binding-win32-arm64-msvc': 0.95.0 '@oxc-transform/binding-win32-x64-msvc': 0.95.0 + oxc-transform@0.96.0: + optionalDependencies: + '@oxc-transform/binding-android-arm64': 0.96.0 + '@oxc-transform/binding-darwin-arm64': 0.96.0 + '@oxc-transform/binding-darwin-x64': 0.96.0 + '@oxc-transform/binding-freebsd-x64': 0.96.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.96.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.96.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.96.0 + '@oxc-transform/binding-linux-arm64-musl': 0.96.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.96.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.96.0 + '@oxc-transform/binding-linux-x64-gnu': 0.96.0 + '@oxc-transform/binding-linux-x64-musl': 0.96.0 + '@oxc-transform/binding-wasm32-wasi': 0.96.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.96.0 + '@oxc-transform/binding-win32-x64-msvc': 0.96.0 + oxc-walker@0.5.2(oxc-parser@0.95.0): dependencies: magic-regexp: 0.10.0 oxc-parser: 0.95.0 + oxc-walker@0.5.2(oxc-parser@0.96.0): + dependencies: + magic-regexp: 0.10.0 + oxc-parser: 0.96.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -13648,8 +13339,6 @@ snapshots: pathval@2.0.1: {} - perfect-debounce@1.0.0: {} - perfect-debounce@2.0.0: {} picocolors@1.1.1: {} @@ -13667,7 +13356,7 @@ snapshots: pkg-types@2.3.0: dependencies: confbox: 0.2.2 - exsolve: 1.0.7 + exsolve: 1.0.8 pathe: 2.0.3 playwright-core@1.56.1: {} @@ -13680,21 +13369,21 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.4(postcss@8.5.6): + postcss-colormin@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.7(postcss@8.5.6): + postcss-convert-values@7.0.8(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.4(postcss@8.5.6): + postcss-discard-comments@7.0.5(postcss@8.5.6): dependencies: postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -13715,11 +13404,11 @@ snapshots: dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.6(postcss@8.5.6) + stylehacks: 7.0.7(postcss@8.5.6) - postcss-merge-rules@7.0.6(postcss@8.5.6): + postcss-merge-rules@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -13737,9 +13426,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.4(postcss@8.5.6): + postcss-minify-params@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13784,9 +13473,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.4(postcss@8.5.6): + postcss-normalize-unicode@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -13806,9 +13495,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.4(postcss@8.5.6): + postcss-reduce-initial@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -13859,7 +13548,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.78.0 + node-abi: 3.80.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 @@ -14059,34 +13748,34 @@ snapshots: '@types/hast': 3.0.4 unist-util-visit: 5.0.0 - reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)): + reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)): dependencies: '@floating-ui/dom': 1.7.4 - '@floating-ui/vue': 1.1.9(vue@3.5.22(typescript@5.9.3)) + '@floating-ui/vue': 1.1.9(vue@3.5.24(typescript@5.9.3)) '@internationalized/date': 3.10.0 '@internationalized/number': 3.6.5 - '@tanstack/vue-virtual': 3.13.12(vue@3.5.22(typescript@5.9.3)) + '@tanstack/vue-virtual': 3.13.12(vue@3.5.24(typescript@5.9.3)) '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) aria-hidden: 1.2.6 defu: 6.1.4 ohash: 2.0.11 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' - typescript - release-it@19.0.6(@types/node@24.9.1)(magicast@0.3.5): + release-it@19.0.6(@types/node@24.10.1): dependencies: '@nodeutils/defaults-deep': 1.1.0 '@octokit/rest': 22.0.0 '@phun-ky/typeof': 2.0.3 async-retry: 1.3.3 - c12: 3.3.1(magicast@0.3.5) + c12: 3.3.1 ci-info: 4.3.1 eta: 4.0.1 git-url-parse: 16.1.0 - inquirer: 12.9.6(@types/node@24.9.1) + inquirer: 12.9.6(@types/node@24.10.1) issue-parser: 7.0.1 lodash.merge: 4.6.2 mime-types: 3.0.1 @@ -14202,49 +13891,49 @@ snapshots: rfdc@1.4.1: {} - rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): + rollup-plugin-dts@6.2.3(rollup@4.53.2)(typescript@5.9.3): dependencies: magic-string: 0.30.21 - rollup: 4.52.5 + rollup: 4.53.2 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-visualizer@6.0.5(rollup@4.52.5): + rollup-plugin-visualizer@6.0.5(rollup@4.53.2): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.2 - rollup@4.52.5: + rollup@4.53.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 + '@rollup/rollup-android-arm-eabi': 4.53.2 + '@rollup/rollup-android-arm64': 4.53.2 + '@rollup/rollup-darwin-arm64': 4.53.2 + '@rollup/rollup-darwin-x64': 4.53.2 + '@rollup/rollup-freebsd-arm64': 4.53.2 + '@rollup/rollup-freebsd-x64': 4.53.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 + '@rollup/rollup-linux-arm-musleabihf': 4.53.2 + '@rollup/rollup-linux-arm64-gnu': 4.53.2 + '@rollup/rollup-linux-arm64-musl': 4.53.2 + '@rollup/rollup-linux-loong64-gnu': 4.53.2 + '@rollup/rollup-linux-ppc64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-musl': 4.53.2 + '@rollup/rollup-linux-s390x-gnu': 4.53.2 + '@rollup/rollup-linux-x64-gnu': 4.53.2 + '@rollup/rollup-linux-x64-musl': 4.53.2 + '@rollup/rollup-openharmony-arm64': 4.53.2 + '@rollup/rollup-win32-arm64-msvc': 4.53.2 + '@rollup/rollup-win32-ia32-msvc': 4.53.2 + '@rollup/rollup-win32-x64-gnu': 4.53.2 + '@rollup/rollup-win32-x64-msvc': 4.53.2 fsevents: 2.3.3 run-applescript@7.1.0: {} @@ -14283,7 +13972,7 @@ snapshots: postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 - sax@1.4.1: {} + sax@1.4.3: {} scslre@0.3.0: dependencies: @@ -14364,14 +14053,14 @@ snapshots: shell-quote@1.8.3: {} - shiki@3.14.0: + shiki@3.15.0: dependencies: - '@shikijs/core': 3.14.0 - '@shikijs/engine-javascript': 3.14.0 - '@shikijs/engine-oniguruma': 3.14.0 - '@shikijs/langs': 3.14.0 - '@shikijs/themes': 3.14.0 - '@shikijs/types': 3.14.0 + '@shikijs/core': 3.15.0 + '@shikijs/engine-javascript': 3.15.0 + '@shikijs/engine-oniguruma': 3.15.0 + '@shikijs/langs': 3.15.0 + '@shikijs/themes': 3.15.0 + '@shikijs/types': 3.15.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -14387,7 +14076,7 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-git@3.28.0: + simple-git@3.30.0: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 @@ -14408,10 +14097,10 @@ snapshots: sisteransi@1.0.5: {} - site-config-stack@3.2.11(vue@3.5.22(typescript@5.9.3)): + site-config-stack@3.2.11(vue@3.5.24(typescript@5.9.3)): dependencies: ufo: 1.6.1 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) skin-tone@2.0.0: dependencies: @@ -14453,7 +14142,7 @@ snapshots: socks@2.8.7: dependencies: - ip-address: 10.0.1 + ip-address: 10.1.0 smart-buffer: 4.2.0 source-map-js@1.2.1: {} @@ -14492,7 +14181,7 @@ snapshots: sprintf-js@1.0.3: {} - srvx@0.8.16: {} + srvx@0.9.6: {} stable-hash-x@0.2.0: {} @@ -14575,9 +14264,9 @@ snapshots: structured-clone-es@1.0.0: {} - stylehacks@7.0.6(postcss@8.5.6): + stylehacks@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -14616,25 +14305,25 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.4.1 + sax: 1.4.3 - swrv@1.1.0(vue@3.5.22(typescript@5.9.3)): + swrv@1.1.0(vue@3.5.24(typescript@5.9.3)): dependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) system-architecture@0.1.0: {} tagged-tag@1.0.0: {} - tailwind-merge@3.3.1: {} + tailwind-merge@3.4.0: {} - tailwind-variants@3.1.1(tailwind-merge@3.3.1)(tailwindcss@4.1.16): + tailwind-variants@3.1.1(tailwind-merge@3.4.0)(tailwindcss@4.1.17): dependencies: - tailwindcss: 4.1.16 + tailwindcss: 4.1.17 optionalDependencies: - tailwind-merge: 3.3.1 + tailwind-merge: 3.4.0 - tailwindcss@4.1.16: {} + tailwindcss@4.1.17: {} tapable@2.3.0: {} @@ -14650,7 +14339,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.5.0 + bare-fs: 4.5.1 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -14675,7 +14364,7 @@ snapshots: - bare-abort-controller - react-native-b4a - tar@7.5.1: + tar@7.5.2: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -14683,7 +14372,7 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - terser@5.44.0: + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -14704,7 +14393,7 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.1: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -14762,7 +14451,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.1.0: + type-fest@5.2.0: dependencies: tagged-tag: 1.0.0 @@ -14781,29 +14470,29 @@ snapshots: ultrahtml@1.6.0: {} - unbuild@3.6.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)): + unbuild@3.6.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.5) - '@rollup/plugin-json': 6.1.0(rollup@4.52.5) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.52.5) - '@rollup/plugin-replace': 6.0.2(rollup@4.52.5) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.53.2) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.2) + '@rollup/plugin-json': 6.1.0(rollup@4.53.2) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.2) + '@rollup/plugin-replace': 6.0.3(rollup@4.53.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.6.1 magic-string: 0.30.21 - mkdist: 2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.22(typescript@5.9.3)) + mkdist: 2.4.1(typescript@5.9.3)(vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)))(vue-tsc@3.1.3(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.1.0 - rollup: 4.52.5 - rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) + rollup: 4.53.2 + rollup-plugin-dts: 6.2.3(rollup@4.53.2)(typescript@5.9.3) scule: 1.3.0 tinyglobby: 0.2.15 untyped: 2.0.0 @@ -14828,9 +14517,7 @@ snapshots: undici@6.21.3: {} - undici@7.16.0: {} - - unenv@2.0.0-rc.23: + unenv@2.0.0-rc.24: dependencies: pathe: 2.0.3 @@ -14922,21 +14609,9 @@ snapshots: universalify@2.0.1: {} - unpic@4.1.3: {} - - unplugin-auto-import@20.2.0(@nuxt/kit@4.2.0(magicast@0.3.5))(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))): - dependencies: - local-pkg: 1.1.2 - magic-string: 0.30.21 - picomatch: 4.0.3 - unimport: 5.5.0 - unplugin: 2.3.10 - unplugin-utils: 0.3.1 - optionalDependencies: - '@nuxt/kit': 4.2.0(magicast@0.3.5) - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) + unpic@4.2.2: {} - unplugin-auto-import@20.2.0(@nuxt/kit@4.2.0(magicast@0.5.0))(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.9.3))): + unplugin-auto-import@20.2.0(@nuxt/kit@4.2.1)(@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3))): dependencies: local-pkg: 1.1.2 magic-string: 0.30.21 @@ -14945,8 +14620,8 @@ snapshots: unplugin: 2.3.10 unplugin-utils: 0.3.1 optionalDependencies: - '@nuxt/kit': 4.2.0(magicast@0.5.0) - '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.9.3)) + '@nuxt/kit': 4.2.1(magicast@0.5.1) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) unplugin-utils@0.2.5: dependencies: @@ -14958,24 +14633,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 - unplugin-vue-components@30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.0(magicast@0.3.5))(vue@3.5.22(typescript@5.9.3)): - dependencies: - chokidar: 4.0.3 - debug: 4.4.3 - local-pkg: 1.1.2 - magic-string: 0.30.21 - mlly: 1.8.0 - tinyglobby: 0.2.15 - unplugin: 2.3.10 - unplugin-utils: 0.3.1 - vue: 3.5.22(typescript@5.9.3) - optionalDependencies: - '@babel/parser': 7.28.5 - '@nuxt/kit': 4.2.0(magicast@0.3.5) - transitivePeerDependencies: - - supports-color - - unplugin-vue-components@30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.0(magicast@0.5.0))(vue@3.5.22(typescript@5.9.3)): + unplugin-vue-components@30.0.0(@babel/parser@7.28.5)(@nuxt/kit@4.2.1)(vue@3.5.24(typescript@5.9.3)): dependencies: chokidar: 4.0.3 debug: 4.4.3 @@ -14985,19 +14643,19 @@ snapshots: tinyglobby: 0.2.15 unplugin: 2.3.10 unplugin-utils: 0.3.1 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: '@babel/parser': 7.28.5 - '@nuxt/kit': 4.2.0(magicast@0.5.0) + '@nuxt/kit': 4.2.1(magicast@0.5.1) transitivePeerDependencies: - supports-color - unplugin-vue-router@0.16.0(@vue/compiler-sfc@3.5.22)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)): + unplugin-vue-router@0.16.1(@vue/compiler-sfc@3.5.24)(typescript@5.9.3)(vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)): dependencies: '@babel/generator': 7.28.5 - '@vue-macros/common': 3.1.1(vue@3.5.22(typescript@5.9.3)) - '@vue/compiler-sfc': 3.5.22 - '@vue/language-core': 3.1.2(typescript@5.9.3) + '@vue-macros/common': 3.1.1(vue@3.5.24(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.24 + '@vue/language-core': 3.1.3(typescript@5.9.3) ast-walker-scope: 0.8.3 chokidar: 4.0.3 json5: 2.2.3 @@ -15013,7 +14671,7 @@ snapshots: unplugin-utils: 0.3.1 yaml: 2.8.1 optionalDependencies: - vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3)) + vue-router: 4.6.3(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - typescript - vue @@ -15064,6 +14722,21 @@ snapshots: idb-keyval: 6.2.2 ioredis: 5.8.2 + unstorage@1.17.2(db0@0.3.4(better-sqlite3@12.4.1))(idb-keyval@6.2.2)(ioredis@5.8.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.4 + lru-cache: 10.4.3 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.1 + optionalDependencies: + db0: 0.3.4(better-sqlite3@12.4.1) + idb-keyval: 6.2.2 + ioredis: 5.8.2 + untun@0.1.3: dependencies: citty: 0.1.6 @@ -15089,16 +14762,25 @@ snapshots: unwasm@0.4.2: dependencies: - exsolve: 1.0.7 + exsolve: 1.0.8 + knitwork: 1.2.0 + magic-string: 0.30.21 + mlly: 1.8.0 + pathe: 2.0.3 + pkg-types: 2.3.0 + + unwasm@0.5.0: + dependencies: + exsolve: 1.0.8 knitwork: 1.2.0 magic-string: 0.30.21 mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 - update-browserslist-db@1.1.4(browserslist@4.27.0): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -15117,11 +14799,11 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vaul-vue@0.4.1(reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)): + vaul-vue@0.4.1(reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@vueuse/core': 10.11.1(vue@3.5.22(typescript@5.9.3)) - reka-ui: 2.6.0(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)) - vue: 3.5.22(typescript@5.9.3) + '@vueuse/core': 10.11.1(vue@3.5.24(typescript@5.9.3)) + reka-ui: 2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' @@ -15140,23 +14822,44 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-dev-rpc@1.1.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)): + vite-dev-rpc@1.1.0(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): + dependencies: + birpc: 2.8.0 + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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)(lightningcss@1.30.2)(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)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: - birpc: 2.6.1 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-hot-client: 2.1.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) - vite-hot-client@2.1.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)): + vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml - vite-node@3.2.4(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1): + vite-node@5.0.0(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -15171,7 +14874,7 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.11.0(eslint@9.39.1(jiti@2.6.1))(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3)): + vite-plugin-checker@0.11.0(eslint@9.39.1(jiti@2.6.1))(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1))(vue-tsc@3.1.3(typescript@5.9.3)): dependencies: '@babel/code-frame': 7.27.1 chokidar: 4.0.3 @@ -15180,7 +14883,7 @@ snapshots: picomatch: 4.0.3 tiny-invariant: 1.3.3 tinyglobby: 0.2.15 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) vscode-uri: 3.1.0 optionalDependencies: eslint: 9.39.1(jiti@2.6.1) @@ -15189,10 +14892,10 @@ snapshots: typescript: 5.9.3 vue-tsc: 3.1.3(typescript@5.9.3) - vite-plugin-dts@4.5.4(@types/node@24.9.1)(rollup@4.52.5)(typescript@5.9.3)(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.10.1)(rollup@4.53.2)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: - '@microsoft/api-extractor': 7.53.3(@types/node@24.9.1) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@microsoft/api-extractor': 7.55.0(@types/node@24.10.1) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) '@volar/typescript': 2.4.23 '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 @@ -15202,13 +14905,13 @@ snapshots: magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-inspect@11.3.3(@nuxt/kit@3.20.0(magicast@0.3.5))(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-inspect@11.3.3(@nuxt/kit@4.2.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: ansis: 4.2.0 debug: 4.4.3 @@ -15218,49 +14921,49 @@ snapshots: perfect-debounce: 2.0.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-dev-rpc: 1.1.0(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) optionalDependencies: - '@nuxt/kit': 3.20.0(magicast@0.3.5) + '@nuxt/kit': 4.2.1(magicast@0.5.1) transitivePeerDependencies: - supports-color - vite-plugin-libcss@1.1.2(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-libcss@1.1.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)): dependencies: minimatch: 9.0.5 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) - vite-plugin-vue-tracer@1.0.1(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3)): + vite-plugin-vue-tracer@1.1.3(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(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.7 + exsolve: 1.0.8 magic-string: 0.30.21 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vue: 3.5.22(typescript@5.9.3) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vue: 3.5.24(typescript@5.9.3) - vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1): + vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.53.2 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.9.1 + '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - terser: 5.44.0 + terser: 5.44.1 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -15278,12 +14981,12 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.2.0(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.9.1 + '@types/node': 24.10.1 transitivePeerDependencies: - jiti - less @@ -15304,19 +15007,19 @@ snapshots: dependencies: ufo: 1.6.1 - vue-component-meta@3.1.2(typescript@5.9.3): + vue-component-meta@3.1.3(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.23 - '@vue/language-core': 3.1.2(typescript@5.9.3) + '@vue/language-core': 3.1.3(typescript@5.9.3) path-browserify: 1.0.1 typescript: 5.9.3 - vue-component-type-helpers: 3.1.2 + vue-component-type-helpers: 3.1.3 - vue-component-type-helpers@3.1.2: {} + vue-component-type-helpers@3.1.3: {} - vue-demi@0.14.10(vue@3.5.22(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.24(typescript@5.9.3)): dependencies: - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vue-devtools-stub@0.1.0: {} @@ -15332,24 +15035,24 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)): + vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.1.12 '@intlify/shared': 11.1.12 '@vue/devtools-api': 6.6.4 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)): + vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.22(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.22)(esbuild@0.25.11)(vue@3.5.22(typescript@5.9.3)): + vue-sfc-transformer@0.1.17(@vue/compiler-core@3.5.24)(esbuild@0.25.12)(vue@3.5.24(typescript@5.9.3)): dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.22 - esbuild: 0.25.11 - vue: 3.5.22(typescript@5.9.3) + '@vue/compiler-core': 3.5.24 + esbuild: 0.25.12 + vue: 3.5.24(typescript@5.9.3) vue-tsc@3.1.3(typescript@5.9.3): dependencies: @@ -15357,13 +15060,13 @@ snapshots: '@vue/language-core': 3.1.3(typescript@5.9.3) typescript: 5.9.3 - vue@3.5.22(typescript@5.9.3): + vue@3.5.24(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.22 - '@vue/compiler-sfc': 3.5.22 - '@vue/runtime-dom': 3.5.22 - '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.3)) - '@vue/shared': 3.5.22 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-sfc': 3.5.24 + '@vue/runtime-dom': 3.5.24 + '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@5.9.3)) + '@vue/shared': 3.5.24 optionalDependencies: typescript: 5.9.3 @@ -15481,12 +15184,12 @@ snapshots: '@poppinss/exception': 1.2.2 error-stack-parser-es: 1.0.5 - youch@4.1.0-beta.11: + youch@4.1.0-beta.12: dependencies: '@poppinss/colors': 4.1.5 - '@poppinss/dumper': 0.6.4 - '@speed-highlight/core': 1.2.8 - cookie: 1.0.2 + '@poppinss/dumper': 0.6.5 + '@speed-highlight/core': 1.2.12 + cookie-es: 2.0.0 youch-core: 0.3.3 zip-stream@6.0.1: diff --git a/src/app/src/app.vue b/src/app/src/app.vue index ed1cfb6a..d2e78e77 100644 --- a/src/app/src/app.vue +++ b/src/app/src/app.vue @@ -27,7 +27,7 @@ const appPortal = ref() const activeDocuments = ref<{ fsPath: string, title: string }[]>([]) function detectActiveDocuments() { - activeDocuments.value = host.document.detectActives().map((content) => { + activeDocuments.value = host.document.utils.detectActives().map((content) => { return { fsPath: content.fsPath, title: content.title, diff --git a/src/app/src/components/content/ContentCardReview.vue b/src/app/src/components/content/ContentCardReview.vue index fc817971..d4ae7096 100644 --- a/src/app/src/components/content/ContentCardReview.vue +++ b/src/app/src/components/content/ContentCardReview.vue @@ -4,13 +4,13 @@ import type { PropType } from 'vue' import { ref, computed, nextTick, watch, onMounted, onUnmounted } from 'vue' import { DraftStatus, ContentFileExtension } from '../../types' import { getFileExtension } from '../../utils/file' -import { generateContentFromDocument, isEqual } from '../../utils/content' import { useMonacoDiff } from '../../composables/useMonacoDiff' import { useMonaco } from '../../composables/useMonaco' import { useStudio } from '../../composables/useStudio' import { fromBase64ToUTF8 } from '../../utils/string' +import { areContentEqual } from '../../utils/content' -const { ui } = useStudio() +const { ui, host } = useStudio() const props = defineProps({ draftItem: { @@ -89,11 +89,12 @@ watch(isOpen, () => { async function initializeEditor() { isLoadingContent.value = true + const generateContentFromDocument = host.document.generate.contentFromDocument const localOriginal = props.draftItem.original ? await generateContentFromDocument(props.draftItem.original as DatabaseItem) : null const gitHubOriginal = props.draftItem.githubFile?.content ? fromBase64ToUTF8(props.draftItem.githubFile.content) : null const modified = props.draftItem.modified ? await generateContentFromDocument(props.draftItem.modified as DatabasePageItem) : null - isAutomaticFormattingDetected.value = !isEqual(localOriginal, gitHubOriginal) + isAutomaticFormattingDetected.value = !areContentEqual(localOriginal, gitHubOriginal) // Wait for DOM to update before initializing Monaco await nextTick() diff --git a/src/app/src/components/content/ContentEditor.vue b/src/app/src/components/content/ContentEditor.vue index e213f14a..c1160626 100644 --- a/src/app/src/components/content/ContentEditor.vue +++ b/src/app/src/components/content/ContentEditor.vue @@ -1,5 +1,5 @@ diff --git a/src/app/src/components/content/ContentEditorCode.vue b/src/app/src/components/content/ContentEditorCode.vue index 892d4e26..51b67b62 100644 --- a/src/app/src/components/content/ContentEditorCode.vue +++ b/src/app/src/components/content/ContentEditorCode.vue @@ -2,11 +2,12 @@ import { computed, ref, watch } from 'vue' import { ContentFileExtension, type DatabasePageItem, type DraftItem, DraftStatus, type DatabaseItem } from '../../types' import type { PropType } from 'vue' -import { generateContentFromDocument, generateDocumentFromContent, isEqual, pickReservedKeysFromDocument } from '../../utils/content' import { setupSuggestion } from '../../utils/monaco' import { useStudio } from '../../composables/useStudio' import { useMonaco } from '../../composables/useMonaco' +import { useMonacoDiff } from '../../composables/useMonacoDiff' import { fromBase64ToUTF8 } from '../../utils/string' +import { areContentEqual } from '../../utils/content' const props = defineProps({ draftItem: { @@ -24,10 +25,13 @@ const document = defineModel() const { mediaTree, host, ui } = useStudio() const editorRef = ref() +const diffEditorRef = ref() + const content = ref('') const currentDocumentId = ref(null) const localStatus = ref(props.draftItem.status) const isAutomaticFormattingDetected = ref(false) +const showAutomaticFormattingDiff = ref(false) const language = computed(() => { switch (document.value?.extension) { @@ -67,11 +71,11 @@ const { editor, setContent: setEditorContent } = useMonaco(editorRef, { content.value = newContent - generateDocumentFromContent(document.value!.id, content.value).then((doc) => { + host.document.generate.documentFromContent(document.value!.id, content.value).then((doc) => { localStatus.value = DraftStatus.Updated document.value = { - ...pickReservedKeysFromDocument(props.draftItem.modified as DatabasePageItem || document.value!), + ...host.document.utils.pickReservedKeys(props.draftItem.modified as DatabasePageItem || document.value!), ...doc, } as DatabasePageItem }) @@ -102,6 +106,19 @@ watch(() => props.readOnly, (newReadOnly) => { } }) +const originalContent = ref('') +const formattedContent = ref('') +watch(showAutomaticFormattingDiff, async (show) => { + if (show && diffEditorRef.value) { + useMonacoDiff(diffEditorRef, { + original: originalContent.value, + modified: formattedContent.value, + language: language.value, + colorMode: ui.colorMode, + }) + } +}) + // Trigger on document changes watch(() => document.value?.id + '-' + props.draftItem.version, async () => { if (document.value?.body) { @@ -110,30 +127,49 @@ watch(() => document.value?.id + '-' + props.draftItem.version, async () => { }, { immediate: true }) async function setContent(document: DatabasePageItem) { - const md = await generateContentFromDocument(document) || '' + const contentFromDocument = host.document.generate.contentFromDocument + const md = await contentFromDocument(document) || '' content.value = md setEditorContent(md, true) currentDocumentId.value = document.id isAutomaticFormattingDetected.value = false if (props.draftItem.original && props.draftItem.githubFile?.content) { - const localOriginal = await generateContentFromDocument(props.draftItem.original as DatabaseItem) + const localOriginal = await contentFromDocument(props.draftItem.original as DatabaseItem) as string const gitHubOriginal = fromBase64ToUTF8(props.draftItem.githubFile.content) - isAutomaticFormattingDetected.value = !isEqual(localOriginal, gitHubOriginal) + isAutomaticFormattingDetected.value = !areContentEqual(localOriginal, gitHubOriginal) + if (isAutomaticFormattingDetected.value) { + originalContent.value = gitHubOriginal + formattedContent.value = localOriginal + } } } + +function toggleDiffView() { + showAutomaticFormattingDiff.value = !showAutomaticFormattingDiff.value +} diff --git a/src/app/src/components/content/ContentEditorText.vue b/src/app/src/components/content/ContentEditorText.vue index ba50a9a4..e5092504 100644 --- a/src/app/src/components/content/ContentEditorText.vue +++ b/src/app/src/components/content/ContentEditorText.vue @@ -5,8 +5,9 @@ import { parseMarkdown, stringifyMarkdown } from '@nuxtjs/mdc/runtime' import { decompressTree, compressTree } from '@nuxt/content/runtime' import type { MDCRoot } from '@nuxtjs/mdc' import type { MarkdownRoot } from '@nuxt/content' -import { removeReservedKeysFromDocument } from '../../utils/content' +import { useStudio } from '../../composables/useStudio' +const { host } = useStudio() const document = defineModel() const content = ref('') @@ -14,7 +15,7 @@ watch(() => document.value?.id, async () => { if (document.value?.body) { // @ts-expect-error todo fix MarkdownRoot/MDCRoot conversion in MDC module const tree = document.value.body.type === 'minimark' ? decompressTree(document.value.body) : (document.value.body as MDCRoot) - const data = removeReservedKeysFromDocument(document.value) + const data = host.document.utils.removeReservedKeys(document.value) stringifyMarkdown(tree, data).then((md) => { content.value = md || '' }) diff --git a/src/app/src/components/shared/AlertMDCFormatting.vue b/src/app/src/components/shared/AlertMDCFormatting.vue index 3a82f44a..249304b2 100644 --- a/src/app/src/components/shared/AlertMDCFormatting.vue +++ b/src/app/src/components/shared/AlertMDCFormatting.vue @@ -1,8 +1,44 @@ + + diff --git a/src/app/src/composables/useContext.ts b/src/app/src/composables/useContext.ts index f81571dd..9f22dc94 100644 --- a/src/app/src/composables/useContext.ts +++ b/src/app/src/composables/useContext.ts @@ -106,8 +106,8 @@ export const useContext = createSharedComposable(( const rootDocumentFsPath = joinURL(fsPath, 'index.md') const navigationDocumentFsPath = joinURL(fsPath, '.navigation.yml') - const navigationDocument = await host.document.create(navigationDocumentFsPath, `title: ${folderName}`) - const rootDocument = await host.document.create(rootDocumentFsPath, `# ${upperFirst(folderName)} root file`) + const navigationDocument = await host.document.db.create(navigationDocumentFsPath, `title: ${folderName}`) + const rootDocument = await host.document.db.create(rootDocumentFsPath, `# ${upperFirst(folderName)} root file`) await activeTree.value.draft.create(navigationDocumentFsPath, navigationDocument) const rootDocumentDraftItem = await activeTree.value.draft.create(rootDocumentFsPath, rootDocument) @@ -136,7 +136,7 @@ export const useContext = createSharedComposable(( }, [StudioItemActionId.CreateDocument]: async (params: CreateFileParams) => { const { fsPath, content } = params - const document = await host.document.create(fsPath, content) + const document = await host.document.db.create(fsPath, content) const draftItem = await activeTree.value.draft.create(fsPath, document as DatabaseItem) await activeTree.value.selectItemByFsPath(draftItem.fsPath) }, diff --git a/src/app/src/composables/useDraftBase.ts b/src/app/src/composables/useDraftBase.ts index 4c8468c4..0d35cec3 100644 --- a/src/app/src/composables/useDraftBase.ts +++ b/src/app/src/composables/useDraftBase.ts @@ -1,8 +1,10 @@ import type { Storage } from 'unstorage' import { joinURL } from 'ufo' -import type { DraftItem, StudioHost, GithubFile, DatabaseItem, MediaItem } from '../types' +import type { DraftItem, StudioHost, GithubFile, DatabaseItem, MediaItem, BaseItem } from '../types' +import { ContentFileExtension } from '../types' +import { studioFlags } from './useStudio' import { DraftStatus } from '../types/draft' -import { checkConflict, findDescendantsFromFsPath, getDraftStatus } from '../utils/draft' +import { checkConflict, findDescendantsFromFsPath } from '../utils/draft' import type { useGit } from './useGit' import { useHooks } from './useHooks' import { ref } from 'vue' @@ -18,8 +20,9 @@ export function useDraftBase( const current = ref | null>(null) const ghPathPrefix = type === 'media' ? 'public' : 'content' - const hostDb = type === 'media' ? host.media : host.document + const hostDb = type === 'media' ? host.media : host.document.db const hookName = `studio:draft:${type}:updated` as const + const areDocumentsEqual = host.document.utils.areEqual const hooks = useHooks() @@ -38,7 +41,7 @@ export function useDraftBase( const draftItem: DraftItem = { fsPath, githubFile, - status: getDraftStatus(item, original), + status: getStatus(item, original!), modified: item, } @@ -46,7 +49,7 @@ export function useDraftBase( draftItem.original = original } - const conflict = await checkConflict(draftItem) + const conflict = await checkConflict(host, draftItem) if (conflict) { draftItem.conflict = conflict } @@ -128,14 +131,14 @@ export function useDraftBase( // Renamed draft if (existingItem.original) { - await revert(existingItem.original.fsPath, { rerender: false }) + await revert(existingItem.original.fsPath!, { rerender: false }) } } else { // @ts-expect-error upsert type is wrong, second param should be DatabaseItem | MediaItem await hostDb.upsert(draftItem.fsPath, existingItem.original) existingItem.modified = existingItem.original - existingItem.status = getDraftStatus(existingItem.modified, existingItem.original) + existingItem.status = getStatus(existingItem.modified as DatabaseItem, existingItem.original as DatabaseItem) await storage.setItem(draftItem.fsPath, existingItem) } } @@ -211,6 +214,42 @@ export function useDraftBase( await hooks.callHook(hookName, { caller: 'useDraftBase.load', selectItem: false }) } + function getStatus(modified: BaseItem, original: BaseItem): DraftStatus { + if (studioFlags.dev) { + return DraftStatus.Pristine + } + + if (!modified && !original) { + throw new Error('Unconsistent state: both modified and original are undefined') + } + + if (!modified) { + return DraftStatus.Deleted + } + + if (!original || original.id !== modified.id) { + return DraftStatus.Created + } + + if (original.extension === ContentFileExtension.Markdown) { + if (!areDocumentsEqual(original as DatabaseItem, modified as DatabaseItem)) { + return DraftStatus.Updated + } + } + else if (typeof original === 'object' && typeof modified === 'object') { + if (!areDocumentsEqual(original as DatabaseItem, modified as DatabaseItem)) { + return DraftStatus.Updated + } + } + else { + if (JSON.stringify(original) !== JSON.stringify(modified)) { + return DraftStatus.Updated + } + } + + return DraftStatus.Pristine + } + return { isLoading, list, @@ -224,5 +263,6 @@ export function useDraftBase( unselect, load, checkConflict, + getStatus, } } diff --git a/src/app/src/composables/useDraftDocuments.ts b/src/app/src/composables/useDraftDocuments.ts index 23736ec1..8794dfa1 100644 --- a/src/app/src/composables/useDraftDocuments.ts +++ b/src/app/src/composables/useDraftDocuments.ts @@ -1,8 +1,6 @@ import type { DatabaseItem, DraftItem, StudioHost, RawFile } from '../types' import { DraftStatus } from '../types/draft' import type { useGit } from './useGit' -import { generateContentFromDocument } from '../utils/content' -import { getDraftStatus } from '../utils/draft' import { createSharedComposable } from '@vueuse/core' import { useHooks } from './useHooks' import { joinURL } from 'ufo' @@ -23,9 +21,12 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: selectByFsPath, unselect, load, + getStatus, } = useDraftBase('document', host, git, storage) const hooks = useHooks() + const hostDb = host.document.db + const generateContentFromDocument = host.document.generate.contentFromDocument async function update(fsPath: string, document: DatabaseItem): Promise> { const existingItem = list.value.find(item => item.fsPath === fsPath) as DraftItem @@ -34,7 +35,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: } const oldStatus = existingItem.status - existingItem.status = getDraftStatus(document, existingItem.original) + existingItem.status = getStatus(document, existingItem.original as DatabaseItem) existingItem.modified = document await storage.setItem(fsPath, existingItem) @@ -42,7 +43,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: list.value = list.value.map(item => item.fsPath === fsPath ? existingItem : item) // Upsert document in database - await host.document.upsert(fsPath, existingItem.modified) + await hostDb.upsert(fsPath, existingItem.modified) // Trigger hook to warn that draft list has changed if (existingItem.status !== oldStatus) { @@ -61,7 +62,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: const { fsPath, newFsPath } = item const existingDraftToRename = list.value.find(draftItem => draftItem.fsPath === fsPath) as DraftItem - const dbItemToRename = await host.document.get(fsPath) + const dbItemToRename = await hostDb.get(fsPath) if (!dbItemToRename) { throw new Error(`Database item not found for document fsPath: ${fsPath}`) } @@ -76,7 +77,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: await remove([fsPath], { rerender: false }) - const newDbItem = await host.document.create(newFsPath, content!) + const newDbItem = await hostDb.create(newFsPath, content!) await create(newFsPath, newDbItem, originalDbItem, { rerender: false }) } @@ -85,7 +86,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: } async function duplicate(fsPath: string): Promise> { - let currentDbItem = await host.document.get(fsPath) + let currentDbItem = await hostDb.get(fsPath) if (!currentDbItem) { throw new Error(`Database item not found for document fsPath: ${fsPath}`) } @@ -103,7 +104,7 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: const newFsPath = `${currentFsPath.split('/').slice(0, -1).join('/')}/${currentNameWithoutExtension}-copy.${currentExtension}` - const newDbItem = await host.document.create(newFsPath, currentContent) + const newDbItem = await hostDb.create(newFsPath, currentContent) return await create(newFsPath, newDbItem) } @@ -144,5 +145,6 @@ export const useDraftDocuments = createSharedComposable((host: StudioHost, git: load, selectByFsPath, unselect, + getStatus, } }) diff --git a/src/app/src/composables/useDraftMedias.ts b/src/app/src/composables/useDraftMedias.ts index 91559573..1f862ab0 100644 --- a/src/app/src/composables/useDraftMedias.ts +++ b/src/app/src/composables/useDraftMedias.ts @@ -24,6 +24,7 @@ export const useDraftMedias = createSharedComposable((host: StudioHost, git: Ret selectByFsPath, unselect, load, + getStatus, } = useDraftBase('media', host, git, storage) async function upload(parentFsPath: string, file: File) { @@ -131,5 +132,6 @@ export const useDraftMedias = createSharedComposable((host: StudioHost, git: Ret unselect, upload, listAsRawFiles, + getStatus, } }) diff --git a/src/app/src/composables/useStudio.ts b/src/app/src/composables/useStudio.ts index 4b7cc535..5e6742e6 100644 --- a/src/app/src/composables/useStudio.ts +++ b/src/app/src/composables/useStudio.ts @@ -7,11 +7,10 @@ import { useDraftMedias } from './useDraftMedias' import { ref } from 'vue' import { useTree } from './useTree' import type { RouteLocationNormalized } from 'vue-router' -import type { StudioHost, GitOptions } from '../types' +import type { StudioHost, GitOptions, DatabaseItem } from '../types' import { StudioFeature } from '../types' import { documentStorage, mediaStorage, nullStorageDriver } from '../utils/storage' import { useHooks } from './useHooks' -import { getDraftStatus } from '../utils/draft' import { useStudioState } from './useStudioState' export const studioFlags = { @@ -44,7 +43,7 @@ export const useStudio = createSharedComposable(() => { host.on.mounted(async () => { if (studioFlags.dev) { - initDevelopmentMode(host, draftDocuments, draftMedias, documentTree, mediaTree) + initDevelopmentMode(host, documentTree, mediaTree) } await draftDocuments.load() @@ -81,7 +80,7 @@ export const useStudio = createSharedComposable(() => { } }) -function initDevelopmentMode(host: StudioHost, draftDocuments: ReturnType, draftMedias: ReturnType, documentTree: ReturnType, mediaTree: ReturnType) { +function initDevelopmentMode(host: StudioHost, documentTree: ReturnType, mediaTree: ReturnType) { const hooks = useHooks() // Disable browser storages @@ -89,20 +88,20 @@ function initDevelopmentMode(host: StudioHost, draftDocuments: ReturnType { - const item = draftDocuments.list.value.find(item => item.fsPath === fsPath) + const item = documentTree.draft.list.value.find(item => item.fsPath === fsPath) if (type === 'remove') { if (item) { - await draftDocuments.remove([fsPath]) + await documentTree.draft.remove([fsPath]) } } else if (item) { // Update draft if the document is not focused or the current item is not the one that was updated if (!window.document.hasFocus() || documentTree.currentItem.value?.fsPath !== fsPath) { - const document = await host.document.get(fsPath) + const document = await host.document.db.get(fsPath) item.modified = document item.original = document - item.status = getDraftStatus(document, item.original) + item.status = mediaTree.draft.getStatus(document as DatabaseItem, item.original as DatabaseItem) item.version = item.version ? item.version + 1 : 1 } } @@ -111,11 +110,11 @@ function initDevelopmentMode(host: StudioHost, draftDocuments: ReturnType { - const item = draftMedias.list.value.find(item => item.fsPath === fsPath) + const item = mediaTree.draft.list.value.find(item => item.fsPath === fsPath) if (type === 'remove') { if (item) { - await draftMedias.remove([fsPath]) + await mediaTree.draft.remove([fsPath]) } } else if (item) { @@ -123,7 +122,7 @@ function initDevelopmentMode(host: StudioHost, draftDocuments: ReturnType Promise - list: () => Promise - upsert: (fsPath: string, document: DatabaseItem) => Promise - create: (fsPath: string, content: string) => Promise - delete: (fsPath: string) => Promise - detectActives: () => Array<{ fsPath: string, title: string }> + db: { + get: (fsPath: string) => Promise + list: () => Promise + upsert: (fsPath: string, document: DatabaseItem) => Promise + create: (fsPath: string, content: string) => Promise + delete: (fsPath: string) => Promise + } + utils: { + areEqual: (document1: DatabaseItem, document2: DatabaseItem) => boolean + isMatchingContent: (content: string, document: DatabaseItem) => Promise + pickReservedKeys: (document: DatabaseItem) => DatabaseItem + removeReservedKeys: (document: DatabaseItem) => DatabaseItem + detectActives: () => Array<{ fsPath: string, title: string }> + } + generate: { + documentFromContent: (id: string, content: string) => Promise + contentFromDocument: (document: DatabaseItem) => Promise + } } media: { get: (fsPath: string) => Promise diff --git a/src/app/src/types/item.ts b/src/app/src/types/item.ts index b804abea..f7165edf 100644 --- a/src/app/src/types/item.ts +++ b/src/app/src/types/item.ts @@ -1,6 +1,6 @@ export interface BaseItem { id: string - fsPath: string + fsPath?: string extension: string stem: string path?: string diff --git a/src/app/src/utils/content.ts b/src/app/src/utils/content.ts index fe0bcca6..802281dc 100644 --- a/src/app/src/utils/content.ts +++ b/src/app/src/utils/content.ts @@ -1,226 +1,7 @@ -// import type { ParsedContentFile } from '@nuxt/content' -import { parseMarkdown, stringifyMarkdown } from '@nuxtjs/mdc/runtime' -import { parseFrontMatter, stringifyFrontMatter } from 'remark-mdc' -import type { MDCElement, MDCRoot } from '@nuxtjs/mdc' -import { type DatabasePageItem, type DatabaseItem, ContentFileExtension } from '../types' -import { omit, pick } from './object' -import { compressTree, decompressTree } from '@nuxt/content/runtime' -import { visit } from 'unist-util-visit' -import type { Node } from 'unist' -import type { MarkdownRoot } from '@nuxt/content' -import { destr } from 'destr' -import { getFileExtension } from './file' - -const reservedKeys = ['id', 'fsPath', 'stem', 'extension', '__hash__', 'path', 'body', 'meta', 'rawbody'] - -export function generateStemFromId(id: string) { - return id.split('/').slice(1).join('/').split('.').slice(0, -1).join('.') -} - -export function pickReservedKeysFromDocument(document: DatabaseItem) { - return pick(document, reservedKeys) -} - -export function removeReservedKeysFromDocument(document: DatabaseItem) { - const result = omit(document, reservedKeys) - // Default value of navigation is true, so we can safely remove it - if (result.navigation === true) { - Reflect.deleteProperty(result, 'navigation') - } - - if (document.seo) { - const seo = document.seo as Record - if ( - (!seo.title || seo.title === document.title) - && (!seo.description || seo.description === document.description) - ) { - Reflect.deleteProperty(result, 'seo') - } - } - - if (!document.title) { - Reflect.deleteProperty(result, 'title') - } - if (!document.description) { - Reflect.deleteProperty(result, 'description') - } - - // expand meta to the root - for (const key in (document.meta || {})) { - if (key !== '__hash__') { - result[key] = (document.meta as Record)[key] - } - } - - for (const key in (result || {})) { - if (result[key] === null) { - Reflect.deleteProperty(result, key) - } - } - - return result -} - -export function isEqual(content1: string | null, content2: string | null): boolean { +export function areContentEqual(content1: string | null, content2: string | null): boolean { if (content1 && content2) { return content1.trim() === content2.trim() } return false } - -export async function generateDocumentFromContent(id: string, content: string): Promise { - const [_id, _hash] = id.split('#') - const extension = getFileExtension(id) - - if (extension === ContentFileExtension.Markdown) { - return await generateDocumentFromMarkdownContent(id, content) - } - - if (extension === ContentFileExtension.YAML || extension === ContentFileExtension.YML) { - return await generateDocumentFromYAMLContent(id, content) - } - - if (extension === ContentFileExtension.JSON) { - return await generateDocumentFromJSONContent(id, content) - } - - return null -} - -async function generateDocumentFromYAMLContent(id: string, content: string): Promise { - const { data } = parseFrontMatter(`---\n${content}\n---`) - - // Keep array contents under `body` key - let parsed = data - if (Array.isArray(data)) { - console.warn(`YAML array is not supported in ${id}, moving the array into the \`body\` key`) - parsed = { body: data } - } - - return { - id, - extension: getFileExtension(id), - stem: generateStemFromId(id), - meta: {}, - ...parsed, - body: parsed.body || parsed, - } as never as DatabaseItem -} - -async function generateDocumentFromJSONContent(id: string, content: string): Promise { - let parsed: Record = destr(content) - - // Keep array contents under `body` key - if (Array.isArray(parsed)) { - console.warn(`JSON array is not supported in ${id}, moving the array into the \`body\` key`) - parsed = { - body: parsed, - } - } - - // fsPath will be overridden by host - return { - id, - extension: ContentFileExtension.JSON, - stem: generateStemFromId(id), - meta: {}, - ...parsed, - body: parsed.body || parsed, - } as never as DatabaseItem -} - -async function generateDocumentFromMarkdownContent(id: string, content: string): Promise { - const document = await parseMarkdown(content, { - remark: { - plugins: { - 'remark-mdc': { - options: { - autoUnwrap: true, - }, - }, - }, - }, - }) - - // Remove nofollow from links - visit(document.body, (node: Node) => (node as MDCElement).type === 'element' && (node as MDCElement).tag === 'a', (node: Node) => { - if ((node as MDCElement).props?.rel?.join(' ') === 'nofollow') { - Reflect.deleteProperty((node as MDCElement).props!, 'rel') - } - }) - - const body = document.body.type === 'root' ? compressTree(document.body) : document.body as never as MarkdownRoot - - return { - id, - meta: {}, - extension: ContentFileExtension.Markdown, - stem: generateStemFromId(id), - body: { - ...body, - toc: document.toc, - }, - ...document.data, - } as never as DatabaseItem -} - -export async function generateContentFromDocument(document: DatabaseItem): Promise { - const [id, _hash] = document.id.split('#') - const extension = getFileExtension(id) - - if (extension === ContentFileExtension.Markdown) { - return await generateContentFromMarkdownDocument(document as DatabasePageItem) - } - - if (extension === ContentFileExtension.YAML || extension === ContentFileExtension.YML) { - return await generateContentFromYAMLDocument(document) - } - - if (extension === ContentFileExtension.JSON) { - return await generateContentFromJSONDocument(document) - } - - return null -} - -export async function generateContentFromYAMLDocument(document: DatabaseItem): Promise { - return await stringifyFrontMatter(removeReservedKeysFromDocument(document), '', { - prefix: '', - suffix: '', - lineWidth: 0, - }) -} - -export async function generateContentFromJSONDocument(document: DatabaseItem): Promise { - return JSON.stringify(removeReservedKeysFromDocument(document), null, 2) -} - -export async function generateContentFromMarkdownDocument(document: DatabasePageItem): Promise { - // @ts-expect-error todo fix MarkdownRoot/MDCRoot conversion in MDC module - const body = document.body.type === 'minimark' ? decompressTree(document.body) : (document.body as MDCRoot) - - // Remove nofollow from links - visit(body, (node: Node) => (node as MDCElement).type === 'element' && (node as MDCElement).tag === 'a', (node: Node) => { - if ((node as MDCElement).props?.rel?.join(' ') === 'nofollow') { - Reflect.deleteProperty((node as MDCElement).props!, 'rel') - } - }) - - const markdown = await stringifyMarkdown(body, removeReservedKeysFromDocument(document), { - frontMatter: { - options: { - lineWidth: 0, - }, - }, - plugins: { - remarkMDC: { - options: { - autoUnwrap: true, - }, - }, - }, - }) - - return typeof markdown === 'string' ? markdown.replace(/*/g, '*') : markdown -} diff --git a/src/app/src/utils/database.ts b/src/app/src/utils/database.ts deleted file mode 100644 index 7cf73fcc..00000000 --- a/src/app/src/utils/database.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { compressTree } from '@nuxt/content/runtime' -import { type DatabasePageItem, ContentFileExtension } from '../types' -import { stringify } from 'minimark/stringify' -import type { MDCRoot } from '@nuxtjs/mdc' -import type { MarkdownRoot } from '@nuxt/content' -import { isDeepEqual } from './object' - -export function isEqual(document1: Record, document2: Record) { - function withoutLastStyles(body: MarkdownRoot) { - if (body.value[body.value.length - 1]?.[0] === 'style') { - return { ...body, value: body.value.slice(0, -1) } - } - return body - } - - const { body: body1, meta: meta1, ...documentData1 } = document1 - const { body: body2, meta: meta2, ...documentData2 } = document2 - - // Compare body first - if (document1.extension === ContentFileExtension.Markdown) { - const minifiedBody1 = withoutLastStyles( - (document1 as DatabasePageItem).body.type === 'minimark' ? document1.body as MarkdownRoot : compressTree(document1.body as unknown as MDCRoot), - ) - const minifiedBody2 = withoutLastStyles( - (document2 as DatabasePageItem).body.type === 'minimark' ? document2.body as MarkdownRoot : compressTree(document2.body as unknown as MDCRoot), - ) - - if (stringify(minifiedBody1) !== stringify(minifiedBody2)) { - return false - } - } - else if (typeof body1 === 'object' && typeof body2 === 'object') { - if (!isDeepEqual(body1 as Record, body2 as Record)) { - return false - } - } - else { - // For other file types, we compare the JSON stringified bodies - if (JSON.stringify(body1) !== JSON.stringify(body2)) { - return false - } - } - - const data1 = refineDocumentData({ ...documentData1, ...(meta1 || {}) }) - const data2 = refineDocumentData({ ...documentData2, ...(meta2 || {}) }) - if (!isDeepEqual(data1, data2)) { - return false - } - - return true -} - -function refineDocumentData(doc: Record) { - if (doc.seo) { - const seo = doc.seo as Record - doc.seo = { - ...seo, - title: seo.title || doc.title, - description: seo.description || doc.description, - } - } - // documents with same id are being compared, so it is safe to remove `path` and `__hash__` - Reflect.deleteProperty(doc, '__hash__') - Reflect.deleteProperty(doc, 'path') - - // default value of navigation is true - if (typeof doc.navigation === 'undefined') { - doc.navigation = true - } - - return doc -} diff --git a/src/app/src/utils/draft.ts b/src/app/src/utils/draft.ts index 3728641f..12f2d4d5 100644 --- a/src/app/src/utils/draft.ts +++ b/src/app/src/utils/draft.ts @@ -1,12 +1,12 @@ -import type { DatabaseItem, MediaItem, DatabasePageItem, DraftItem, BaseItem, ContentConflict } from '../types' -import { DraftStatus, ContentFileExtension } from '../types' -import { isEqual } from './database' -import { studioFlags } from '../composables/useStudio' -import { generateContentFromDocument, generateDocumentFromContent } from './content' +import type { DatabaseItem, MediaItem, DraftItem, ContentConflict, StudioHost } from '../types' +import { DraftStatus } from '../types' import { fromBase64ToUTF8 } from '../utils/string' import { isMediaFile } from './file' -export async function checkConflict(draftItem: DraftItem): Promise { +export async function checkConflict(host: StudioHost, draftItem: DraftItem): Promise { + const generateContentFromDocument = host.document.generate.contentFromDocument + const isDocumentMatchingContent = host.document.utils.isMatchingContent + if (isMediaFile(draftItem.fsPath) || draftItem.fsPath.endsWith('.gitkeep')) { return } @@ -27,14 +27,13 @@ export async function checkConflict(draftItem: DraftItem, modified as unknown as Record)) { - return DraftStatus.Updated - } - } - else { - if (JSON.stringify(original) !== JSON.stringify(modified)) { - return DraftStatus.Updated - } - } - - return DraftStatus.Pristine -} - export function findDescendantsFromFsPath(list: DraftItem[], fsPath: string): DraftItem[] { if (fsPath === '/') { return list diff --git a/src/app/src/utils/object.ts b/src/app/src/utils/object.ts index 8232da4c..fa132231 100644 --- a/src/app/src/utils/object.ts +++ b/src/app/src/utils/object.ts @@ -1,15 +1,5 @@ const dateRegex = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}\.\d{3}Z)?$/ -export const omit = (obj: Record, keys: string | string[]) => { - return Object.fromEntries(Object.entries(obj) - .filter(([key]) => !keys.includes(key))) -} - -export const pick = (obj: Record, keys: string | string[]) => { - return Object.fromEntries(Object.entries(obj) - .filter(([key]) => keys.includes(key))) -} - export function isDeepEqual(obj1: Record, obj2: Record) { if (typeof obj1 === 'string' && typeof obj2 === 'string') { if (String(obj1).match(dateRegex) && String(obj2).match(dateRegex)) { diff --git a/src/app/src/utils/tree.ts b/src/app/src/utils/tree.ts index dbf1c89b..61aa7b91 100644 --- a/src/app/src/utils/tree.ts +++ b/src/app/src/utils/tree.ts @@ -1,14 +1,11 @@ import { - ContentFileExtension, DraftStatus, TreeStatus, - type DatabasePageItem, type DraftItem, type TreeItem, } from '../types' import type { RouteLocationNormalized } from 'vue-router' import type { BaseItem } from '../types/item' -import { isEqual } from './database' import { studioFlags } from '../composables/useStudio' import { getFileExtension, parseName } from './file' @@ -65,7 +62,7 @@ TreeItem[] { for (const dbItem of virtualDbItems) { const itemHasPathField = 'path' in dbItem && dbItem.path - const fsPathSegments = dbItem.fsPath.split('/').filter(Boolean) + const fsPathSegments = dbItem.fsPath!.split('/').filter(Boolean) const directorySegments = fsPathSegments.slice(0, -1) let fileName = fsPathSegments[fsPathSegments.length - 1].replace(/\.[^/.]+$/, '') @@ -77,12 +74,12 @@ TreeItem[] { fileName = name === 'index' ? 'home' : name const fileItem: TreeItem = { name: fileName, - fsPath: dbItem.fsPath, + fsPath: dbItem.fsPath!, type: 'file', prefix, } - if (dbItem.fsPath.endsWith('.gitkeep')) { + if (dbItem.fsPath!.endsWith('.gitkeep')) { fileItem.hide = true } @@ -92,7 +89,7 @@ TreeItem[] { const draftFileItem = draftList?.find(draft => draft.fsPath === dbItem.fsPath) if (draftFileItem) { - fileItem.status = getTreeStatus(draftFileItem.modified!, draftFileItem.original!) + fileItem.status = getTreeStatus(draftFileItem) } tree.push(fileItem) @@ -138,18 +135,18 @@ TreeItem[] { const { name, prefix } = parseName(fileName) const fileItem: TreeItem = { name, - fsPath: dbItem.fsPath, + fsPath: dbItem.fsPath!, type: 'file', prefix, } - if (dbItem.fsPath.endsWith('.gitkeep')) { + if (dbItem.fsPath!.endsWith('.gitkeep')) { fileItem.hide = true } const draftFileItem = draftList?.find(draft => draft.fsPath === dbItem.fsPath) if (draftFileItem) { - fileItem.status = getTreeStatus(draftFileItem.modified!, draftFileItem.original!) + fileItem.status = getTreeStatus(draftFileItem) } if (dbItem.path) { @@ -164,36 +161,25 @@ TreeItem[] { return tree } -export function getTreeStatus(modified?: BaseItem, original?: BaseItem): TreeStatus { - if (studioFlags.dev) { +export function getTreeStatus(draftItem: DraftItem): TreeStatus { + if (draftItem.status === DraftStatus.Pristine) { return TreeStatus.Opened } - if (!original && !modified) { - throw new Error('Unconsistent state: both modified and original are undefined') - } - - if (!original) { - return TreeStatus.Created - } - - if (!modified) { + if (draftItem.status === DraftStatus.Deleted) { return TreeStatus.Deleted } - if (modified.id !== original.id) { - return TreeStatus.Renamed + if (draftItem.status === DraftStatus.Updated) { + return TreeStatus.Updated } - if (original.extension === ContentFileExtension.Markdown) { - if (!isEqual(original as DatabasePageItem, modified as DatabasePageItem)) { - return TreeStatus.Updated - } - } - else { - if (JSON.stringify(original) !== JSON.stringify(modified)) { - return TreeStatus.Updated + if (draftItem.status === DraftStatus.Created) { + const { original, modified } = draftItem + if (original && modified && original.id !== modified.id) { + return TreeStatus.Renamed } + return TreeStatus.Created } return TreeStatus.Opened diff --git a/src/app/test/integration/actions.test.ts b/src/app/test/integration/actions.test.ts index 4d10aa4c..9cd5942f 100644 --- a/src/app/test/integration/actions.test.ts +++ b/src/app/test/integration/actions.test.ts @@ -242,7 +242,7 @@ describe('Document - Action Chains Integration Tests', () => { const consoleInfoSpy = vi.spyOn(console, 'info') // Create document in db and load tree - await mockHost.document.create(documentFsPath, 'Test content') + await mockHost.document.db.create(documentFsPath, 'Test content') await context.activeTree.value.draft.load() /* STEP 1: SELECT */ @@ -345,7 +345,7 @@ describe('Document - Action Chains Integration Tests', () => { const consoleInfoSpy = vi.spyOn(console, 'info') // Create document in db and load tree - await mockHost.document.create(documentFsPath, 'Test content') + await mockHost.document.db.create(documentFsPath, 'Test content') await context.activeTree.value.draft.load() /* STEP 1: SELECT */ @@ -428,7 +428,7 @@ describe('Document - Action Chains Integration Tests', () => { const consoleInfoSpy = vi.spyOn(console, 'info') // Create document in db and load tree - await mockHost.document.create(documentFsPath, 'Test content') + await mockHost.document.db.create(documentFsPath, 'Test content') await context.activeTree.value.draft.load() /* STEP 1: SELECT */ @@ -556,7 +556,7 @@ describe('Document - Action Chains Integration Tests', () => { const consoleInfoSpy = vi.spyOn(console, 'info') // Create document in db and load tree - await mockHost.document.create(documentFsPath, 'Test content') + await mockHost.document.db.create(documentFsPath, 'Test content') await context.activeTree.value.draft.load() /* STEP 1: SELECT */ @@ -616,7 +616,7 @@ describe('Document - Action Chains Integration Tests', () => { const consoleInfoSpy = vi.spyOn(console, 'info') // Create document in db and load tree - await mockHost.document.create(documentFsPath, 'Test content') + await mockHost.document.db.create(documentFsPath, 'Test content') await context.activeTree.value.draft.load() /* STEP 1: SELECT */ diff --git a/src/app/test/mocks/host.ts b/src/app/test/mocks/host.ts index cf9e9963..f6950ea1 100644 --- a/src/app/test/mocks/host.ts +++ b/src/app/test/mocks/host.ts @@ -5,6 +5,7 @@ import { createMockDocument } from './document' import { createMockMedia } from './media' import { joinURL } from 'ufo' import type { MediaItem } from '../../src/types/media' +import { isDocumentMatchingContent, areDocumentsEqual, generateDocumentFromContent, generateContentFromDocument, pickReservedKeysFromDocument, removeReservedKeysFromDocument } from '../../../module/dist/runtime/utils/document' // Helper to convert fsPath to id (simulates module's internal mapping) export const fsPathToId = (fsPath: string, type: 'document' | 'media') => { @@ -25,32 +26,57 @@ const mediaDb = new Map() export const createMockHost = (): StudioHost => ({ document: { - get: vi.fn().mockImplementation(async (fsPath: string) => { - const id = fsPathToId(fsPath, 'document') - if (documentDb.has(id)) { - return documentDb.get(id) - } - const document = createMockDocument(id) - documentDb.set(id, document) - return document - }), - create: vi.fn().mockImplementation(async (fsPath: string, content: string) => { - const id = fsPathToId(fsPath, 'document') - const document = createMockDocument(id, { body: { type: 'minimark', value: [content?.trim() || 'Test content'] }, fsPath }) - documentDb.set(id, document) - return document - }), - upsert: vi.fn().mockImplementation(async (fsPath: string, document: DatabaseItem) => { - const id = fsPathToId(fsPath, 'document') - documentDb.set(id, document) - }), - delete: vi.fn().mockImplementation(async (fsPath: string) => { - const id = fsPathToId(fsPath, 'document') - documentDb.delete(id) - }), - list: vi.fn().mockImplementation(async () => { - return Array.from(documentDb.values()) - }), + db: { + get: vi.fn().mockImplementation(async (fsPath: string) => { + const id = fsPathToId(fsPath, 'document') + if (documentDb.has(id)) { + return documentDb.get(id) + } + const document = createMockDocument(id) + documentDb.set(id, document) + return document + }), + create: vi.fn().mockImplementation(async (fsPath: string, content: string) => { + const id = fsPathToId(fsPath, 'document') + const document = createMockDocument(id, { body: { type: 'minimark', value: [content?.trim() || 'Test content'] }, fsPath }) + documentDb.set(id, document) + return document + }), + upsert: vi.fn().mockImplementation(async (fsPath: string, document: DatabaseItem) => { + const id = fsPathToId(fsPath, 'document') + documentDb.set(id, document) + }), + delete: vi.fn().mockImplementation(async (fsPath: string) => { + const id = fsPathToId(fsPath, 'document') + documentDb.delete(id) + }), + list: vi.fn().mockImplementation(async () => { + return Array.from(documentDb.values()) + }), + }, + utils: { + areEqual: vi.fn().mockImplementation((document1: DatabaseItem, document2: DatabaseItem) => { + return areDocumentsEqual(document1, document2) + }), + isMatchingContent: vi.fn().mockImplementation(async (content: string, document: DatabaseItem) => { + return isDocumentMatchingContent(content, document) + }), + pickReservedKeys: vi.fn().mockImplementation((document: DatabaseItem) => { + return pickReservedKeysFromDocument(document) as DatabaseItem + }), + removeReservedKeys: vi.fn().mockImplementation((document: DatabaseItem) => { + return removeReservedKeysFromDocument(document) as DatabaseItem + }), + detectActives: vi.fn().mockReturnValue([]), + }, + generate: { + documentFromContent: vi.fn().mockImplementation(async (id: string, content: string) => { + return generateDocumentFromContent(id, content) + }), + contentFromDocument: vi.fn().mockImplementation(async (document: DatabaseItem) => { + return generateContentFromDocument(document) + }), + }, }, media: { get: vi.fn().mockImplementation(async (fsPath: string) => { @@ -83,6 +109,37 @@ export const createMockHost = (): StudioHost => ({ app: { requestRerender: vi.fn(), navigateTo: vi.fn(), + getManifestId: vi.fn().mockResolvedValue('test-manifest-id'), + }, + meta: { + dev: false, + components: vi.fn().mockReturnValue([]), + }, + on: { + routeChange: vi.fn(), + mounted: vi.fn(), + beforeUnload: vi.fn(), + colorModeChange: vi.fn(), + manifestUpdate: vi.fn(), + documentUpdate: vi.fn(), + mediaUpdate: vi.fn(), + }, + ui: { + colorMode: 'light', + activateStudio: vi.fn(), + deactivateStudio: vi.fn(), + expandSidebar: vi.fn(), + collapseSidebar: vi.fn(), + updateStyles: vi.fn(), + }, + user: { + get: vi.fn().mockReturnValue({ name: 'Test User', email: 'test@example.com' }), + }, + repository: { + provider: 'github', + owner: 'test-owner', + name: 'test-repo', + branch: 'main', }, } as never) diff --git a/src/app/test/unit/compsables/draft-base.test.ts b/src/app/test/unit/compsables/draft-base.test.ts new file mode 100644 index 00000000..a14f2bb4 --- /dev/null +++ b/src/app/test/unit/compsables/draft-base.test.ts @@ -0,0 +1,47 @@ +import { describe, it, expect } from 'vitest' +import { useDraftBase } from '../../../src/composables/useDraftBase' +import { dbItemsList } from '../../mocks/database' +import { DraftStatus } from '../../../src/types' +import { createMockHost } from '../../mocks/host' + +const { getStatus } = useDraftBase('document', createMockHost(), null as never, null as never) + +describe('getStatus', () => { + it('returns Deleted status when modified item is undefined', () => { + const original = dbItemsList[0] // landing/index.md + + expect(getStatus(undefined as never, original)).toBe(DraftStatus.Deleted) + }) + + it('returns Created status when original is undefined', () => { + const modified = dbItemsList[1] // docs/1.getting-started/2.introduction.md + + expect(getStatus(modified, undefined as never)).toBe(DraftStatus.Created) + }) + + it('returns Created status when original has different id', () => { + const original = dbItemsList[0] // landing/index.md + const modified = dbItemsList[1] // docs/1.getting-started/2.introduction.md + + expect(getStatus(modified, original)).toBe(DraftStatus.Created) + }) + + it('returns Updated status when markdown content is different', () => { + const original = dbItemsList[1] // docs/1.getting-started/2.introduction.md + const modified = { + ...original, + body: { + type: 'minimark', + value: ['text', 'Modified'], + }, + } + + expect(getStatus(modified, original)).toBe(DraftStatus.Updated) + }) + + it('returns Pristine status when markdown content is identical', () => { + const original = dbItemsList[1] // docs/1.getting-started/2.introduction.md + + expect(getStatus(original, original)).toBe(DraftStatus.Pristine) + }) +}) diff --git a/src/app/test/unit/utils/database.test.ts b/src/app/test/unit/utils/database.test.ts deleted file mode 100644 index a77aabc6..00000000 --- a/src/app/test/unit/utils/database.test.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { describe, it, expect } from 'vitest' -import { isEqual } from '../../../src/utils/database' -import type { DatabasePageItem } from '../../../src/types' -import { ContentFileExtension } from '../../../src/types' - -describe('isEqual', () => { - it('should return true for two identical markdown documents with diffrent hash', () => { - const document1: DatabasePageItem = { - id: 'content:index.md', - path: '/index', - title: 'Test Document', - description: 'A test document', - extension: ContentFileExtension.Markdown, - stem: 'index', - seo: {}, - body: { - type: 'minimark', - value: ['Hello World'], - }, - meta: { - __hash__: 'hash123', - }, - } - - const document2: DatabasePageItem = { - id: 'content:index.md', - path: '/index', - title: 'Test Document', - description: 'A test document', - extension: ContentFileExtension.Markdown, - stem: 'index', - seo: {}, - body: { - type: 'minimark', - value: ['Hello World'], - }, - meta: { - __hash__: 'hash456', - }, - } - - expect(isEqual(document1, document2)).toBe(true) - }) - - it('should return false for two different markdown documents', () => { - const document1: DatabasePageItem = { - id: 'content:index.md', - path: '/index', - title: 'Test Document', - description: 'A test document', - extension: ContentFileExtension.Markdown, - stem: 'index', - seo: {}, - body: { - type: 'minimark', - value: ['Hello World'], - }, - meta: { - title: 'Test Document', - }, - } - - const document2: DatabasePageItem = { - id: 'content:index.md', - path: '/index', - title: 'Test Document', - description: 'A test document', - extension: ContentFileExtension.Markdown, - stem: 'index', - seo: {}, - body: { - type: 'minimark', - value: ['Different content'], - }, - meta: { - title: 'Test Document', - }, - } - - expect(isEqual(document1, document2)).toBe(false) - }) - - it('should return true for two identical yaml document with different order of keys', () => { - const document1: DatabasePageItem = { - extension: ContentFileExtension.YAML, - description: 'A test document', - title: 'Test Document', - path: '/index', - id: 'content:index.yml', - tags: ['tag1', 'tag2'], - } - - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: 'A test document', - extension: ContentFileExtension.YAML, - tags: ['tag1', 'tag2'], - } - - expect(isEqual(document1, document2)).toBe(true) - }) - - it('should return true if one document has extra key with null/undefined value', () => { - const document1: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: 'A test document', - } - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: 'A test document', - extra: null, - } - expect(isEqual(document1, document2)).toBe(true) - }) - - it('should ignore null/undefiend values', () => { - const document1: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: null, - } - - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: undefined, - } - - expect(isEqual(document1, document2)).toBe(true) - }) - - it('should return false if one of documents missing a key', () => { - const document1: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - description: 'A test document', - } - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - } - - expect(isEqual(document1, document2)).toBe(false) - }) - - it('should return false if array values are different', () => { - const document1: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - tags: ['tag1', 'tag2'], - } - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - tags: ['tag1', 'tag3'], - title: 'Test Document', - } - - expect(isEqual(document1, document2)).toBe(false) - }) - - it('should return true if date values are same but different format', () => { - const document1: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - date: '2025-11-04', - } - const document2: DatabasePageItem = { - id: 'content:index.yml', - path: '/index', - title: 'Test Document', - date: '2025-11-04T00:00:00.000Z', - } - - expect(isEqual(document1, document2)).toBe(true) - }) -}) diff --git a/src/app/test/unit/utils/draft.test.ts b/src/app/test/unit/utils/draft.test.ts index 8975ffd8..6a639c92 100644 --- a/src/app/test/unit/utils/draft.test.ts +++ b/src/app/test/unit/utils/draft.test.ts @@ -1,8 +1,6 @@ import { describe, it, expect } from 'vitest' -import { findDescendantsFromFsPath, getDraftStatus } from '../../../src/utils/draft' +import { findDescendantsFromFsPath } from '../../../src/utils/draft' import { draftItemsList } from '../../../test/mocks/draft' -import { dbItemsList } from '../../../test/mocks/database' -import { DraftStatus } from '../../../src/types' describe('findDescendantsFromFsPath', () => { it('returns exact match for a root level file', () => { @@ -50,43 +48,3 @@ describe('findDescendantsFromFsPath', () => { expect(descendants[0].fsPath).toBe('1.getting-started/1.advanced/1.studio.md') }) }) - -describe('getDraftStatus', () => { - it('returns Deleted status when modified item is undefined', () => { - const original = dbItemsList[0] // landing/index.md - - expect(getDraftStatus(undefined, original)).toBe(DraftStatus.Deleted) - }) - - it('returns Created status when original is undefined', () => { - const modified = dbItemsList[1] // docs/1.getting-started/2.introduction.md - - expect(getDraftStatus(modified, undefined)).toBe(DraftStatus.Created) - }) - - it('returns Created status when original has different id', () => { - const original = dbItemsList[0] // landing/index.md - const modified = dbItemsList[1] // docs/1.getting-started/2.introduction.md - - expect(getDraftStatus(modified, original)).toBe(DraftStatus.Created) - }) - - it('returns Updated status when markdown content is different', () => { - const original = dbItemsList[1] // docs/1.getting-started/2.introduction.md - const modified = { - ...original, - body: { - type: 'minimark', - value: ['text', 'Modified'], - }, - } - - expect(getDraftStatus(modified, original)).toBe(DraftStatus.Updated) - }) - - it('returns Pristine status when markdown content is identical', () => { - const original = dbItemsList[1] // docs/1.getting-started/2.introduction.md - - expect(getDraftStatus(original, original)).toBe(DraftStatus.Pristine) - }) -}) diff --git a/src/app/test/unit/utils/tree.test.ts b/src/app/test/unit/utils/tree.test.ts index dcd313f3..dbfe9fce 100644 --- a/src/app/test/unit/utils/tree.test.ts +++ b/src/app/test/unit/utils/tree.test.ts @@ -54,7 +54,7 @@ describe('buildTree of documents with one level of depth', () => { const createdDbItem: DatabaseItem = dbItemsList[0] const draftList: DraftItem[] = [{ - fsPath: createdDbItem.fsPath, + fsPath: createdDbItem.fsPath!, status: DraftStatus.Created, original: undefined, modified: createdDbItem, @@ -74,7 +74,7 @@ describe('buildTree of documents with one level of depth', () => { const deletedDbItem: DatabaseItem = dbItemsList[1] // 2.introduction.md const draftList: DraftItem[] = [{ - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, status: DraftStatus.Deleted, modified: undefined, original: deletedDbItem, @@ -93,7 +93,7 @@ describe('buildTree of documents with one level of depth', () => { result[1].children![1], { name: 'introduction', - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, type: 'file', routePath: deletedDbItem.path, status: TreeStatus.Deleted, @@ -108,7 +108,7 @@ describe('buildTree of documents with one level of depth', () => { const deletedDbItem: DatabaseItem = dbItemsList[2] // 3.installation.md const draftList: DraftItem[] = [{ - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, status: DraftStatus.Deleted, modified: undefined, original: deletedDbItem, @@ -127,7 +127,7 @@ describe('buildTree of documents with one level of depth', () => { result[1].children![0], { name: 'installation', - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, type: 'file', routePath: deletedDbItem.path, status: TreeStatus.Deleted, @@ -142,7 +142,7 @@ describe('buildTree of documents with one level of depth', () => { const updatedDbItem: DatabaseItem = dbItemsList[1] // 2.introduction.md const draftList: DraftItem[] = [{ - fsPath: updatedDbItem.fsPath, + fsPath: updatedDbItem.fsPath!, status: DraftStatus.Updated, original: updatedDbItem, modified: { @@ -179,12 +179,12 @@ describe('buildTree of documents with one level of depth', () => { const openedDbItem: DatabaseItem = dbItemsList[2] // 3.installation.md const draftList: DraftItem[] = [{ - fsPath: createdDbItem.fsPath, + fsPath: createdDbItem.fsPath!, status: DraftStatus.Created, original: undefined, modified: createdDbItem, }, { - fsPath: openedDbItem.fsPath, + fsPath: openedDbItem.fsPath!, status: DraftStatus.Pristine, original: openedDbItem, modified: openedDbItem, @@ -212,12 +212,12 @@ describe('buildTree of documents with one level of depth', () => { const openedDbItem2: DatabaseItem = dbItemsList[2] // 3.installation.md const draftList: DraftItem[] = [{ - fsPath: openedDbItem1.fsPath, + fsPath: openedDbItem1.fsPath!, status: DraftStatus.Pristine, original: openedDbItem1, modified: openedDbItem1, }, { - fsPath: openedDbItem2.fsPath, + fsPath: openedDbItem2.fsPath!, status: DraftStatus.Pristine, original: openedDbItem2, modified: openedDbItem2, @@ -252,12 +252,12 @@ describe('buildTree of documents with one level of depth', () => { } const draftList: DraftItem[] = [{ - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, status: DraftStatus.Deleted, modified: undefined, original: deletedDbItem, }, { - fsPath: createdDbItem.fsPath, + fsPath: createdDbItem.fsPath!, status: DraftStatus.Created, modified: createdDbItem, original: deletedDbItem, @@ -277,7 +277,7 @@ describe('buildTree of documents with one level of depth', () => { children: [ ...result[1].children!.slice(1), { - fsPath: createdDbItem.fsPath, + fsPath: createdDbItem.fsPath!, routePath: createdDbItem.path, name: createdDbItem.path!.split('/').pop()!, type: 'file', @@ -333,7 +333,7 @@ describe('buildTree of documents with two levels of depth', () => { const updatedDbItem: DatabaseItem = nestedDbItemsList[0] // 1.essentials/2.configuration.md const draftList: DraftItem[] = [{ - fsPath: updatedDbItem.fsPath, + fsPath: updatedDbItem.fsPath!, status: DraftStatus.Updated, original: updatedDbItem, modified: { @@ -361,7 +361,7 @@ describe('buildTree of documents with two levels of depth', () => { const updatedDbItem: DatabaseItem = nestedDbItemsList[1] // 1.essentials/1.nested/2.advanced.md const draftList: DraftItem[] = [{ - fsPath: updatedDbItem.fsPath, + fsPath: updatedDbItem.fsPath!, status: DraftStatus.Updated, original: updatedDbItem, modified: { @@ -398,7 +398,7 @@ describe('buildTree of documents with two levels of depth', () => { const deletedDbItem: DatabaseItem = nestedDbItemsList[1] // 1.essentials/1.nested/2.advanced.md const draftList: DraftItem[] = [{ - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, status: DraftStatus.Deleted, modified: undefined, original: deletedDbItem, @@ -420,7 +420,7 @@ describe('buildTree of documents with two levels of depth', () => { children: [ { name: 'advanced', - fsPath: deletedDbItem.fsPath, + fsPath: deletedDbItem.fsPath!, routePath: deletedDbItem.path, type: 'file', status: TreeStatus.Deleted, @@ -505,7 +505,7 @@ describe('buildTree of medias', () => { } const draftList: DraftItem[] = [{ - fsPath: gitkeepDbItem.fsPath, + fsPath: gitkeepDbItem.fsPath!, status: DraftStatus.Created, original: undefined, modified: gitkeepDbItem, @@ -527,59 +527,91 @@ describe('buildTree of medias', () => { }) describe('getTreeStatus', () => { - it('draft is CREATED if originalDatabaseItem is not defined', () => { - const modified: DatabaseItem = dbItemsList[0] // index.md + it('should return OPENED when draft status is Pristine', () => { + const draftItem: DraftItem = { + fsPath: 'index.md', + status: DraftStatus.Pristine, + original: dbItemsList[0], + modified: dbItemsList[0], + } - const status = getTreeStatus(modified, undefined) - expect(status).toBe(TreeStatus.Created) + const status = getTreeStatus(draftItem) + expect(status).toBe(TreeStatus.Opened) }) - it('draft is OPENED if originalDatabaseItem is defined and is the same as draftedDocument', () => { - const original: DatabaseItem = dbItemsList[0] // index.md + it('should return DELETED when draft status is Deleted', () => { + const draftItem: DraftItem = { + fsPath: 'index.md', + status: DraftStatus.Deleted, + original: dbItemsList[0], + modified: undefined, + } - const status = getTreeStatus(original, original) - expect(status).toBe(TreeStatus.Opened) + const status = getTreeStatus(draftItem) + expect(status).toBe(TreeStatus.Deleted) }) - it('draft is UPDATED if originalDatabaseItem is defined and one of its data field is different from draftedDocument', () => { + it('should return UPDATED when draft status is Updated', () => { const original: DatabaseItem = dbItemsList[0] const modified: DatabaseItem = { ...original, title: 'New title', } - const status = getTreeStatus(modified, original) - expect(status).toBe(TreeStatus.Updated) - }) - - it('draft is UPDATED if originalDatabaseItem is defined and its body is different from draftedDocument', () => { - const original: DatabaseItem = dbItemsList[0] - const modified: DatabaseItem = { - ...original, - body: { type: 'minimark', value: ['New body'] }, + const draftItem: DraftItem = { + fsPath: 'index.md', + status: DraftStatus.Updated, + original, + modified, } - const status = getTreeStatus(modified, original) + const status = getTreeStatus(draftItem) expect(status).toBe(TreeStatus.Updated) }) - it('draft is RENAMED if originalDatabaseItem is defined and id is different from draftedDocument', () => { + it('should return RENAMED when draft status is Created and original.id differs from modified.id', () => { const original: DatabaseItem = dbItemsList[0] // index.md const modified: DatabaseItem = { ...original, id: 'renamed.md', } - const status = getTreeStatus(modified, original) + const draftItem: DraftItem = { + fsPath: 'renamed.md', + status: DraftStatus.Created, + original, + modified, + } + + const status = getTreeStatus(draftItem) expect(status).toBe(TreeStatus.Renamed) }) - it('draft is DELETED if modifiedDatabaseItem is not defined', () => { - const original: DatabaseItem = dbItemsList[0] // index.md - const modified: DatabaseItem = undefined as never + it('should return CREATED when draft status is Created without original', () => { + const draftItem: DraftItem = { + fsPath: 'index.md', + status: DraftStatus.Created, + original: undefined, + modified: dbItemsList[0], + } - const status = getTreeStatus(modified, original) - expect(status).toBe(TreeStatus.Deleted) + const status = getTreeStatus(draftItem) + expect(status).toBe(TreeStatus.Created) + }) + + it('should return CREATED when draft status is Created with original that has same id', () => { + const original: DatabaseItem = dbItemsList[0] + const modified: DatabaseItem = dbItemsList[0] + + const draftItem: DraftItem = { + fsPath: 'index.md', + status: DraftStatus.Created, + original, + modified, + } + + const status = getTreeStatus(draftItem) + expect(status).toBe(TreeStatus.Created) }) }) diff --git a/src/module/src/runtime/host.dev.ts b/src/module/src/runtime/host.dev.ts index c50ff3e6..6e5a41fc 100644 --- a/src/module/src/runtime/host.dev.ts +++ b/src/module/src/runtime/host.dev.ts @@ -1,8 +1,7 @@ import { useStudioHost as useStudioHostBase } from './host' import type { StudioUser, DatabaseItem, Repository } from 'nuxt-studio/app' -import { generateContentFromDocument } from 'nuxt-studio/app/utils' import { getCollectionByFilePath, generateIdFromFsPath, generateFsPathFromId, getCollectionById } from './utils/collection' -import { createCollectionDocument } from './utils/document' +import { normalizeDocument } from './utils/document' import { createStorage } from 'unstorage' import httpDriver from 'unstorage/drivers/http' import { useRuntimeConfig } from '#imports' @@ -29,16 +28,16 @@ export function useStudioHost(user: StudioUser, repository: Repository) { } // TODO @farnabaz to check - host.document.upsert = debounce(async (fsPath: string, upsertedDocument: DatabaseItem) => { + host.document.db.upsert = debounce(async (fsPath: string, upsertedDocument: DatabaseItem) => { const collectionInfo = getCollectionByFilePath(fsPath, collections) if (!collectionInfo) { throw new Error(`Collection not found for fsPath: ${fsPath}`) } const id = generateIdFromFsPath(fsPath, collectionInfo) - const doc = createCollectionDocument(id, collectionInfo, upsertedDocument) + const document = normalizeDocument(id, collectionInfo, upsertedDocument) - const content = await generateContentFromDocument(doc) + const content = await host.document.generate.contentFromDocument(document) await devStorage.setItem(fsPath, content, { headers: { @@ -48,7 +47,7 @@ export function useStudioHost(user: StudioUser, repository: Repository) { }, 100) // TODO @farnabaz to check - host.document.delete = async (fsPath: string) => { + host.document.db.delete = async (fsPath: string) => { await devStorage.removeItem(fsPath) } diff --git a/src/module/src/runtime/host.ts b/src/module/src/runtime/host.ts index 3c77baef..0a64d85e 100644 --- a/src/module/src/runtime/host.ts +++ b/src/module/src/runtime/host.ts @@ -3,11 +3,10 @@ import { ensure } from './utils/ensure' import type { CollectionInfo, CollectionItemBase, CollectionSource, DatabaseAdapter } from '@nuxt/content' import type { ContentDatabaseAdapter } from '../types/content' import { getCollectionByFilePath, generateIdFromFsPath, generateRecordDeletion, generateRecordInsert, generateFsPathFromId, getCollectionById } from './utils/collection' -import { createCollectionDocument, normalizeDocument } from './utils/document' +import { normalizeDocument, isDocumentMatchingContent, generateDocumentFromContent, generateContentFromDocument, areDocumentsEqual, pickReservedKeysFromDocument, removeReservedKeysFromDocument } from './utils/document' import { kebabCase } from 'scule' import type { StudioHost, StudioUser, DatabaseItem, MediaItem, Repository } from 'nuxt-studio/app' import type { RouteLocationNormalized, Router } from 'vue-router' -import { generateDocumentFromContent } from 'nuxt-studio/app/utils' // @ts-expect-error queryCollection is not defined in .nuxt/imports.d.ts import { clearError, getAppManifest, queryCollection, queryCollectionItemSurroundings, queryCollectionNavigation, queryCollectionSearchSections } from '#imports' import { collections } from '#content/preview' @@ -185,93 +184,117 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH }, document: { - get: async (fsPath: string): Promise => { - const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) - if (!collectionInfo) { - throw new Error(`Collection not found for fsPath: ${fsPath}`) - } + db: { + get: async (fsPath: string): Promise => { + const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) + if (!collectionInfo) { + throw new Error(`Collection not found for fsPath: ${fsPath}`) + } - const id = generateIdFromFsPath(fsPath, collectionInfo) - const item = await useContentCollectionQuery(collectionInfo.name).where('id', '=', id).first() + const id = generateIdFromFsPath(fsPath, collectionInfo) + const item = await useContentCollectionQuery(collectionInfo.name).where('id', '=', id).first() - return item ? normalizeDocument(fsPath, item as DatabaseItem) : undefined - }, - list: async (): Promise => { - const collections = Object.values(useContentCollections()).filter(collection => collection.name !== 'info') - const documentsByCollection = await Promise.all(collections.map(async (collection) => { - const documents = await useContentCollectionQuery(collection.name).all() as DatabaseItem[] - - return documents.map((document) => { - const source = getCollectionSourceById(document.id, collection.source) - const fsPath = generateFsPathFromId(document.id, source!) + if (!item) { + return undefined + } - return normalizeDocument(fsPath, document) - }) - })) + return { + ...item, + fsPath, + } + }, + list: async (): Promise => { + const collections = Object.values(useContentCollections()).filter(collection => collection.name !== 'info') + const documentsByCollection = await Promise.all(collections.map(async (collection) => { + const documents = await useContentCollectionQuery(collection.name).all() as DatabaseItem[] + + return documents.map((document) => { + const source = getCollectionSourceById(document.id, collection.source) + const fsPath = generateFsPathFromId(document.id, source!) + + return { + ...document, + fsPath, + } + }) + })) + + return documentsByCollection.flat() + }, + create: async (fsPath: string, content: string) => { + const existingDocument = await host.document.db.get(fsPath) + if (existingDocument) { + throw new Error(`Cannot create document with fsPath "${fsPath}": document already exists.`) + } - return documentsByCollection.flat() - }, - create: async (fsPath: string, content: string) => { - const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) - if (!collectionInfo) { - throw new Error(`Collection not found for fsPath: ${fsPath}`) - } + const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) + if (!collectionInfo) { + throw new Error(`Collection not found for fsPath: ${fsPath}`) + } - const id = generateIdFromFsPath(fsPath, collectionInfo!) + const id = generateIdFromFsPath(fsPath, collectionInfo!) + const document = await generateDocumentFromContent(id, content) + const normalizedDocument = normalizeDocument(id, collectionInfo, document!) - const existingDocument = await host.document.get(id) - if (existingDocument) { - throw new Error(`Cannot create document with id "${id}": document already exists.`) - } + await host.document.db.upsert(fsPath, normalizedDocument) - const document = await generateDocumentFromContent(id, content) - const collectionDocument = createCollectionDocument(id, collectionInfo, document!) + return { + ...normalizedDocument, + fsPath, + } + }, + upsert: async (fsPath: string, document: CollectionItemBase) => { + const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) + if (!collectionInfo) { + throw new Error(`Collection not found for fsPath: ${fsPath}`) + } - await host.document.upsert(fsPath, collectionDocument) + const id = generateIdFromFsPath(fsPath, collectionInfo) - return normalizeDocument(fsPath, collectionDocument!) - }, - upsert: async (fsPath: string, document: CollectionItemBase) => { - const collectionInfo = getCollectionByFilePath(fsPath, useContentCollections()) - if (!collectionInfo) { - throw new Error(`Collection not found for fsPath: ${fsPath}`) - } + const normalizedDocument = normalizeDocument(id, collectionInfo, document) - const id = generateIdFromFsPath(fsPath, collectionInfo) + await useContentDatabaseAdapter(collectionInfo.name).exec(generateRecordDeletion(collectionInfo, id)) + await useContentDatabaseAdapter(collectionInfo.name).exec(generateRecordInsert(collectionInfo, normalizedDocument)) + }, + delete: async (fsPath: string) => { + const collection = getCollectionByFilePath(fsPath, useContentCollections()) + if (!collection) { + throw new Error(`Collection not found for fsPath: ${fsPath}`) + } - const doc = createCollectionDocument(id, collectionInfo, document) + const id = generateIdFromFsPath(fsPath, collection) - await useContentDatabaseAdapter(collectionInfo.name).exec(generateRecordDeletion(collectionInfo, id)) - await useContentDatabaseAdapter(collectionInfo.name).exec(generateRecordInsert(collectionInfo, doc)) + await useContentDatabaseAdapter(collection.name).exec(generateRecordDeletion(collection, id)) + }, }, - delete: async (fsPath: string) => { - const collection = getCollectionByFilePath(fsPath, useContentCollections()) - if (!collection) { - throw new Error(`Collection not found for fsPath: ${fsPath}`) - } - - const id = generateIdFromFsPath(fsPath, collection) - - await useContentDatabaseAdapter(collection.name).exec(generateRecordDeletion(collection, id)) + utils: { + areEqual: (document1: DatabaseItem, document2: DatabaseItem) => areDocumentsEqual(document1, document2), + isMatchingContent: async (content: string, document: DatabaseItem) => isDocumentMatchingContent(content, document), + pickReservedKeys: (document: DatabaseItem) => pickReservedKeysFromDocument(document), + removeReservedKeys: (document: DatabaseItem) => removeReservedKeysFromDocument(document), + detectActives: () => { + // TODO: introduce a new convention to detect data contents [data-content-id!] + const wrappers = document.querySelectorAll('[data-content-id]') + return Array.from(wrappers).map((wrapper) => { + const id = wrapper.getAttribute('data-content-id')! + const title = id.split(/[/:]/).pop() || id + + const collection = getCollectionById(id, useContentCollections()) + + const source = getCollectionSourceById(id, collection.source) + + const fsPath = generateFsPathFromId(id, source!) + + return { + fsPath, + title, + } + }) + }, }, - detectActives: () => { - // TODO: introduce a new convention to detect data contents [data-content-id!] - const wrappers = document.querySelectorAll('[data-content-id]') - return Array.from(wrappers).map((wrapper) => { - const id = wrapper.getAttribute('data-content-id')! - const title = id.split(/[/:]/).pop() || id - - const collection = getCollectionById(id, useContentCollections()) - - const source = getCollectionSourceById(id, collection.source) - - const fsPath = generateFsPathFromId(id, source!) - - return { - fsPath, - title, - } - }) + generate: { + documentFromContent: async (id: string, content: string) => generateDocumentFromContent(id, content), + contentFromDocument: async (document: DatabaseItem) => generateContentFromDocument(document), }, }, diff --git a/src/module/src/runtime/types/content.ts b/src/module/src/runtime/types/content.ts new file mode 100644 index 00000000..a4561cbb --- /dev/null +++ b/src/module/src/runtime/types/content.ts @@ -0,0 +1,6 @@ +export enum ContentFileExtension { + Markdown = 'md', + YAML = 'yaml', + YML = 'yml', + JSON = 'json', +} diff --git a/src/module/src/runtime/utils/document.ts b/src/module/src/runtime/utils/document.ts index 96ea59bd..bbe45312 100644 --- a/src/module/src/runtime/utils/document.ts +++ b/src/module/src/runtime/utils/document.ts @@ -1,9 +1,26 @@ -import type { CollectionInfo, CollectionItemBase, PageCollectionItemBase } from '@nuxt/content' +import type { CollectionInfo, CollectionItemBase, MarkdownRoot, PageCollectionItemBase } from '@nuxt/content' import { getOrderedSchemaKeys } from './collection' import { pathMetaTransform } from './path-meta' -import type { DatabaseItem } from 'nuxt-studio/app' +import type { DatabaseItem, DatabasePageItem } from 'nuxt-studio/app' +import { doObjectsMatch, omit, pick } from './object' +import { ContentFileExtension } from '../types/content' +import { parseMarkdown } from '@nuxtjs/mdc/runtime/parser/index' +import type { MDCElement, MDCRoot } from '@nuxtjs/mdc' +import { visit } from 'unist-util-visit' +import { compressTree, decompressTree } from '@nuxt/content/runtime' +import destr from 'destr' +import { parseFrontMatter, stringifyFrontMatter } from 'remark-mdc' +import { stringify } from 'minimark/stringify' +// import type { ParsedContentFile } from '@nuxt/content' +import { stringifyMarkdown } from '@nuxtjs/mdc/runtime' +import type { Node } from 'unist' -export function createCollectionDocument(id: string, collectionInfo: CollectionInfo, document: CollectionItemBase) { +const reservedKeys = ['id', 'fsPath', 'stem', 'extension', '__hash__', 'path', 'body', 'meta', 'rawbody'] + +/* +** Normalization utils +*/ +export function normalizeDocument(id: string, collectionInfo: CollectionInfo, document: CollectionItemBase) { const parsedContent = [ pathMetaTransform, ].reduce((acc, fn) => collectionInfo.type === 'page' ? fn(acc as PageCollectionItemBase) : acc, { ...document, id } as PageCollectionItemBase) @@ -20,6 +37,11 @@ export function createCollectionDocument(id: string, collectionInfo: CollectionI } } + // Clean fsPath from meta to avoid storing it in the database + if (meta.fsPath) { + Reflect.deleteProperty(meta, 'fsPath') + } + result.meta = meta // Storing `content` into `rawbody` field @@ -37,27 +59,336 @@ export function createCollectionDocument(id: string, collectionInfo: CollectionI return result } -export function normalizeDocument(fsPath: string, document: DatabaseItem): DatabaseItem { - // `seo` is an auto-generated field in content module - // if `seo.title` and `seo.description` are same as `title` and `description` - // we can remove it to avoid duplication - if (document?.seo) { +export function pickReservedKeysFromDocument(document: DatabaseItem): DatabaseItem { + return pick(document, reservedKeys) as DatabaseItem +} + +export function removeReservedKeysFromDocument(document: DatabaseItem): DatabaseItem { + const result = omit(document, reservedKeys) + // Default value of navigation is true, so we can safely remove it + if (result.navigation === true) { + Reflect.deleteProperty(result, 'navigation') + } + + if (document.seo) { const seo = document.seo as Record + if ( + (!seo.title || seo.title === document.title) + && (!seo.description || seo.description === document.description) + ) { + Reflect.deleteProperty(result, 'seo') + } + } + + if (!document.title) { + Reflect.deleteProperty(result, 'title') + } + if (!document.description) { + Reflect.deleteProperty(result, 'description') + } - if (!seo.title || seo.title === document.title) { - Reflect.deleteProperty(document.seo, 'title') + // expand meta to the root + for (const key in (document.meta || {})) { + if (key !== '__hash__') { + result[key] = (document.meta as Record)[key] } - if (!seo.description || seo.description === document.description) { - Reflect.deleteProperty(document.seo, 'description') + } + + for (const key in (result || {})) { + if (result[key] === null) { + Reflect.deleteProperty(result, key) } + } + + return result as DatabaseItem +} - if (Object.keys(seo).length === 0) { - Reflect.deleteProperty(document, 'seo') +/* +** Comparison utils +*/ +export async function isDocumentMatchingContent(content: string, document: DatabaseItem): Promise { + const generatedDocument = await generateDocumentFromContent(document.id, content) as DatabaseItem + + if (generatedDocument.extension === ContentFileExtension.Markdown) { + const { body: generatedBody, ...generatedDocumentData } = generatedDocument + const { body: documentBody, ...documentData } = document + + if (stringify(withoutLastStyles(generatedBody as MarkdownRoot)) !== stringify(withoutLastStyles(documentBody as MarkdownRoot))) { + return false } + + return doObjectsMatch(generatedDocumentData, documentData) + } + + return doObjectsMatch(generatedDocument, document) +} + +export function areDocumentsEqual(document1: Record, document2: Record) { + const { body: body1, meta: meta1, ...documentData1 } = document1 + const { body: body2, meta: meta2, ...documentData2 } = document2 + + // Compare body first + if (document1.extension === ContentFileExtension.Markdown) { + const minifiedBody1 = withoutLastStyles( + (document1 as DatabasePageItem).body.type === 'minimark' ? document1.body as MarkdownRoot : compressTree(document1.body as unknown as MDCRoot), + ) + const minifiedBody2 = withoutLastStyles( + (document2 as DatabasePageItem).body.type === 'minimark' ? document2.body as MarkdownRoot : compressTree(document2.body as unknown as MDCRoot), + ) + + if (stringify(minifiedBody1) !== stringify(minifiedBody2)) { + return false + } + } + else if (typeof body1 === 'object' && typeof body2 === 'object') { + if (!doObjectsMatch(body1 as Record, body2 as Record)) { + return false + } + } + else { + // For other file types, we compare the JSON stringified bodies + if (JSON.stringify(body1) !== JSON.stringify(body2)) { + return false + } + } + + function refineDocumentData(doc: Record) { + if (doc.seo) { + const seo = doc.seo as Record + doc.seo = { + ...seo, + title: seo.title || doc.title, + description: seo.description || doc.description, + } + } + // documents with same id are being compared, so it is safe to remove `path` and `__hash__` + Reflect.deleteProperty(doc, '__hash__') + Reflect.deleteProperty(doc, 'path') + + // default value of navigation is true + if (typeof doc.navigation === 'undefined') { + doc.navigation = true + } + + // Normalize date values to ISO string format for comparison + for (const key in doc) { + const value = doc[key] + if (typeof value === 'string' && !Number.isNaN(Date.parse(value))) { + // Check if it looks like a date string (YYYY-MM-DD or ISO format) + if (/^\d{4}-\d{2}-\d{2}/.test(value)) { + doc[key] = new Date(value).toISOString().split('T')[0] + } + } + } + + // Remove null and undefined values recursively + function removeNullAndUndefined(obj: Record): Record { + const result: Record = {} + + for (const key in obj) { + const value = obj[key] + + // Skip null and undefined values + if (value === null || value === undefined) { + continue + } + + // Recursively clean nested objects (but not arrays) + if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) { + result[key] = removeNullAndUndefined(value as Record) + } + else { + result[key] = value + } + } + + return result + } + + return removeNullAndUndefined(doc) + } + + const data1 = refineDocumentData({ ...documentData1, ...(meta1 || {}) }) + const data2 = refineDocumentData({ ...documentData2, ...(meta2 || {}) }) + if (!doObjectsMatch(data1, data2)) { + return false + } + + return true +} + +/* +** Generation utils +*/ +export async function generateDocumentFromContent(id: string, content: string): Promise { + const [_id, _hash] = id.split('#') + const extension = getFileExtension(id) + + if (extension === ContentFileExtension.Markdown) { + return await generateDocumentFromMarkdownContent(id, content) + } + + if (extension === ContentFileExtension.YAML || extension === ContentFileExtension.YML) { + return await generateDocumentFromYAMLContent(id, content) + } + + if (extension === ContentFileExtension.JSON) { + return await generateDocumentFromJSONContent(id, content) + } + + return null +} + +export async function generateDocumentFromYAMLContent(id: string, content: string): Promise { + const { data } = parseFrontMatter(`---\n${content}\n---`) + + // Keep array contents under `body` key + let parsed = data + if (Array.isArray(data)) { + console.warn(`YAML array is not supported in ${id}, moving the array into the \`body\` key`) + parsed = { body: data } } return { - ...document, - fsPath, + id, + extension: getFileExtension(id), + stem: generateStemFromId(id), + meta: {}, + ...parsed, + body: parsed.body || parsed, + } as DatabaseItem +} + +export async function generateDocumentFromJSONContent(id: string, content: string): Promise { + let parsed: Record = destr(content) + + // Keep array contents under `body` key + if (Array.isArray(parsed)) { + console.warn(`JSON array is not supported in ${id}, moving the array into the \`body\` key`) + parsed = { + body: parsed, + } + } + + // fsPath will be overridden by host + return { + id, + extension: ContentFileExtension.JSON, + stem: generateStemFromId(id), + meta: {}, + ...parsed, + body: parsed.body || parsed, + } as DatabaseItem +} + +export async function generateDocumentFromMarkdownContent(id: string, content: string): Promise { + const document = await parseMarkdown(content, { + remark: { + plugins: { + 'remark-mdc': { + options: { + autoUnwrap: true, + }, + }, + }, + }, + }) + + // Remove nofollow from links + visit(document.body, (node: unknown) => (node as MDCElement).type === 'element' && (node as MDCElement).tag === 'a', (node: unknown) => { + if ((node as MDCElement).props?.rel?.join(' ') === 'nofollow') { + Reflect.deleteProperty((node as MDCElement).props!, 'rel') + } + }) + + const body = document.body.type === 'root' ? compressTree(document.body) : document.body as never as MarkdownRoot + + const result = { + id, + meta: {}, + extension: 'md', + stem: id.split('/').slice(1).join('/').split('.').slice(0, -1).join('.'), + body: { + ...body, + toc: document.toc, + }, + ...document.data, + } + + return pathMetaTransform(result as PageCollectionItemBase) as DatabaseItem +} + +export async function generateContentFromDocument(document: DatabaseItem): Promise { + const [id, _hash] = document.id.split('#') + const extension = getFileExtension(id!) + + if (extension === ContentFileExtension.Markdown) { + return await generateContentFromMarkdownDocument(document as DatabasePageItem) + } + + if (extension === ContentFileExtension.YAML || extension === ContentFileExtension.YML) { + return await generateContentFromYAMLDocument(document) + } + + if (extension === ContentFileExtension.JSON) { + return await generateContentFromJSONDocument(document) + } + + return null +} + +export async function generateContentFromYAMLDocument(document: DatabaseItem): Promise { + return await stringifyFrontMatter(removeReservedKeysFromDocument(document), '', { + prefix: '', + suffix: '', + lineWidth: 0, + }) +} + +export async function generateContentFromJSONDocument(document: DatabaseItem): Promise { + return JSON.stringify(removeReservedKeysFromDocument(document), null, 2) +} + +export async function generateContentFromMarkdownDocument(document: DatabasePageItem): Promise { + // @ts-expect-error todo fix MarkdownRoot/MDCRoot conversion in MDC module + const body = document.body.type === 'minimark' ? decompressTree(document.body) : (document.body as MDCRoot) + + // Remove nofollow from links + visit(body, (node: Node) => (node as MDCElement).type === 'element' && (node as MDCElement).tag === 'a', (node: Node) => { + if ((node as MDCElement).props?.rel?.join(' ') === 'nofollow') { + Reflect.deleteProperty((node as MDCElement).props!, 'rel') + } + }) + + const markdown = await stringifyMarkdown(body, removeReservedKeysFromDocument(document), { + frontMatter: { + options: { + lineWidth: 0, + }, + }, + plugins: { + remarkMDC: { + options: { + autoUnwrap: true, + }, + }, + }, + }) + + return typeof markdown === 'string' ? markdown.replace(/*/g, '*') : markdown +} + +function generateStemFromId(id: string) { + return id.split('/').slice(1).join('/').split('.').slice(0, -1).join('.') +} + +function getFileExtension(id: string) { + return id.split('#')[0]?.split('.').pop()!.toLowerCase() +} + +function withoutLastStyles(body: MarkdownRoot) { + if (body.value[body.value.length - 1]?.[0] === 'style') { + return { ...body, value: body.value.slice(0, -1) } } + return body } diff --git a/src/module/src/runtime/utils/object.ts b/src/module/src/runtime/utils/object.ts index b6d87b4c..f264ed1f 100644 --- a/src/module/src/runtime/utils/object.ts +++ b/src/module/src/runtime/utils/object.ts @@ -2,3 +2,34 @@ export const omit = (obj: Record, keys: string | string[]) => { return Object.fromEntries(Object.entries(obj) .filter(([key]) => !keys.includes(key))) } + +export const pick = (obj: Record, keys: string | string[]) => { + return Object.fromEntries(Object.entries(obj) + .filter(([key]) => keys.includes(key))) +} + +export function doObjectsMatch(base: Record, target: Record) { + if (typeof base !== 'object' || typeof target !== 'object') { + return base === target + } + if (Array.isArray(base) && Array.isArray(target)) { + if (base.length !== target.length) { + return false + } + for (let index = 0; index < base.length; index++) { + const item = base[index] + const targetItem = target[index] + if (!doObjectsMatch(item, targetItem)) { + return false + } + } + return true + } + + for (const key in base) { + if (!doObjectsMatch(base[key] as Record, target[key] as Record)) { + return false + } + } + return true +} diff --git a/src/module/src/types/content.ts b/src/module/src/types/content.ts index 0eaedfa4..658ef466 100644 --- a/src/module/src/types/content.ts +++ b/src/module/src/types/content.ts @@ -11,9 +11,4 @@ export interface ContentProvide { } export type ContentDatabaseAdapter = (collection: string) => DatabaseAdapter -export enum ContentFileExtension { - Markdown = 'md', - YAML = 'yaml', - YML = 'yml', - JSON = 'json', -} +export { ContentFileExtension } from '../runtime/types/content' diff --git a/src/module/test/utils/document.test.ts b/src/module/test/utils/document.test.ts new file mode 100644 index 00000000..61a1e571 --- /dev/null +++ b/src/module/test/utils/document.test.ts @@ -0,0 +1,464 @@ +import { describe, it, expect } from 'vitest' +import { areDocumentsEqual, isDocumentMatchingContent } from '../../src/runtime/utils/document' +import { ContentFileExtension } from '../../src/types/content' +import type { DatabasePageItem } from 'nuxt-studio/app' + +describe('areDocumentsEqual', () => { + it('should return true for two identical markdown documents with diffrent hash', () => { + const document1: DatabasePageItem = { + id: 'content:index.md', + path: '/index', + title: 'Test Document', + description: 'A test document', + extension: ContentFileExtension.Markdown, + stem: 'index', + seo: {}, + body: { + type: 'minimark', + value: ['Hello World'], + }, + meta: { + __hash__: 'hash123', + }, + } + + const document2: DatabasePageItem = { + id: 'content:index.md', + path: '/index', + title: 'Test Document', + description: 'A test document', + extension: ContentFileExtension.Markdown, + stem: 'index', + seo: {}, + body: { + type: 'minimark', + value: ['Hello World'], + }, + meta: { + __hash__: 'hash456', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(true) + }) + + it('should return false for two different markdown documents', () => { + const document1: DatabasePageItem = { + id: 'content:index.md', + path: '/index', + title: 'Test Document', + description: 'A test document', + extension: ContentFileExtension.Markdown, + stem: 'index', + seo: {}, + body: { + type: 'minimark', + value: ['Hello World'], + }, + meta: { + title: 'Test Document', + }, + } + + const document2: DatabasePageItem = { + id: 'content:index.md', + path: '/index', + title: 'Test Document', + description: 'A test document', + extension: ContentFileExtension.Markdown, + stem: 'index', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(false) + }) + + it('should return true for two identical yaml document with different order of keys', () => { + const document1: DatabasePageItem = { + extension: ContentFileExtension.YAML, + description: 'A test document', + title: 'Test Document', + path: '/index', + stem: 'index.yml', + id: 'content:index.yml', + tags: ['tag1', 'tag2'], + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + const document2: DatabasePageItem = { + id: 'content:index.yml', + stem: 'index.yml', + path: '/index', + title: 'Test Document', + description: 'A test document', + extension: ContentFileExtension.YAML, + tags: ['tag1', 'tag2'], + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(true) + }) + + it('should return true if one document has extra key with null/undefined value', () => { + const document1: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: 'A test document', + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + const document2: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: 'A test document', + extra: null, + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + expect(areDocumentsEqual(document1, document2)).toBe(true) + }) + + it('should ignore null/undefined values', () => { + const document1: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: null as never, + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Same content'], + }, + meta: { + title: 'Test Document', + }, + } + + const document2: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: undefined as never, + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Same content'], + }, + meta: { + title: 'Test Document', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(true) + }) + + it('should return false if one of documents missing a key', () => { + const document1: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: 'A test document', + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + const document2 = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + extension: 'yml', + stem: 'index.yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } as never as DatabasePageItem + + expect(areDocumentsEqual(document1, document2)).toBe(false) + }) + + it('should return false if array values are different', () => { + const document1: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + description: 'A test document', + tags: ['tag1', 'tag2'], + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + const document2: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + tags: ['tag1', 'tag3'], + title: 'Test Document', + description: 'A test document', + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(false) + }) + + it('should return true if date values are same but different format', () => { + const document1: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + date: '2025-11-04', + description: 'A test document', + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + const document2: DatabasePageItem = { + id: 'content:index.yml', + path: '/index', + title: 'Test Document', + date: '2025-11-04T00:00:00.000Z', + description: 'A test document', + stem: 'index.yml', + extension: 'yml', + seo: {}, + body: { + type: 'minimark', + value: ['Different content'], + }, + meta: { + title: 'Test Document', + }, + } + + expect(areDocumentsEqual(document1, document2)).toBe(true) + }) +}) + +describe('isDocumentMatchingContent', () => { + it('should be true', async () => { + const markdownContent = `Hello` + + const document = { + id: 'docs/1.getting-started/test.md', + title: 'Test', + body: { + type: 'minimark', + value: [ + [ + 'p', + {}, + 'Hello', + ], + ], + toc: { + title: '', + searchDepth: 2, + depth: 2, + links: [], + }, + }, + description: 'Hello', + extension: 'md', + layout: null, + links: null, + meta: {}, + navigation: true, + path: '/getting-started/test', + seo: { + title: 'Test', + description: 'Hello', + }, + stem: '1.getting-started/test', + __hash__: 'FORE7RbeCNfOhf3pzpQ6iehsHwCfTab-N64UgQZUOIg', + fsPath: '1.getting-started/test.md', + } + const _isDocumentMatchingContent = await isDocumentMatchingContent(markdownContent, document) + + expect(_isDocumentMatchingContent).toBe(true) + }) + + it('should be true for fallback title and description', async () => { + const markdownContent = ` +# Hello + +Description` + + const document = { + id: 'docs/1.getting-started/test.md', + title: 'Hello', + body: { + type: 'minimark', + value: [ + [ + 'h1', + { + id: 'hello', + }, + 'Hello', + ], + [ + 'p', + {}, + 'Description', + ], + ], + toc: { + title: '', + searchDepth: 2, + depth: 2, + links: [], + }, + }, + description: 'Description', + extension: 'md', + layout: null, + links: null, + meta: {}, + navigation: true, + path: '/getting-started/test', + seo: { + title: 'Hello', + description: 'Description', + }, + stem: '1.getting-started/test', + __hash__: 'gaOnNORwr1k3a615yjZjMBMBc_KE4FlOETknzMqD884', + fsPath: '1.getting-started/test.md', + } + + const _isDocumentMatchingContent = await isDocumentMatchingContent(markdownContent, document) + expect(_isDocumentMatchingContent).toBe(true) + }) + + it('should be true for Seo', async () => { + const markdownContent = `--- +seo: + title: 'Seo Hello' + description: 'Seo Description' +--- +# Hello + +Description` + + const document = { + id: 'docs/1.getting-started/test.md', + title: 'Hello', + body: { + type: 'minimark', + value: [ + [ + 'h1', + { + id: 'hello', + }, + 'Hello', + ], + [ + 'p', + {}, + 'Description', + ], + ], + toc: { + title: '', + searchDepth: 2, + depth: 2, + links: [], + }, + }, + description: 'Description', + extension: 'md', + layout: null, + links: null, + meta: {}, + navigation: true, + path: '/getting-started/test', + seo: { + title: 'Seo Hello', + description: 'Seo Description', + }, + stem: '1.getting-started/test', + __hash__: 'gaOnNORwr1k3a615yjZjMBMBc_KE4FlOETknzMqD884', + fsPath: '1.getting-started/test.md', + } + + const _isDocumentMatchingContent = await isDocumentMatchingContent(markdownContent, document) + expect(_isDocumentMatchingContent).toBe(true) + }) +})