From c0e86d6111f680d402f2788a5bbcfd4042c6be4a Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 27 Aug 2025 12:06:11 -0400 Subject: [PATCH] initial prep --- i18n/configs/.gitkeep | 0 i18n/defs.ts | 96 +++++++ i18n/locales.ts | 40 +++ i18n/locales/.gitkeep | 0 nuxt.config.ts | 20 +- package.json | 2 + pnpm-lock.yaml | 656 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 810 insertions(+), 4 deletions(-) create mode 100644 i18n/configs/.gitkeep create mode 100644 i18n/defs.ts create mode 100644 i18n/locales.ts create mode 100644 i18n/locales/.gitkeep diff --git a/i18n/configs/.gitkeep b/i18n/configs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/i18n/defs.ts b/i18n/defs.ts new file mode 100644 index 000000000..85e9421b6 --- /dev/null +++ b/i18n/defs.ts @@ -0,0 +1,96 @@ +import assert from 'node:assert'; +import fs from 'node:fs'; + +import type { LocaleObject, Directions } from '@nuxtjs/i18n'; +import YAML from 'yaml'; + +interface LocaleCodeMap { + iso639_3: C; + wals?: string; + itef?: string; +} + +interface LocaleMisc { + dir?: Directions; + nativeName?: string; + region?: string; + script?: string; + variant?: string; +} + +export interface LocaleInit { + code: LocaleCodeMap; + name: string; + nameEnglish: string; + url: string; + published: boolean; + symbol: string; + family: string; + extra?: string | null; + misc?: LocaleMisc; +} + +export interface LocaleInterface extends LocaleInit { + fullName: string; + i18nLocale: LocaleObject; + config: Record; + matches(filter: string): boolean; +} + +export class Locale implements LocaleInterface { + code: LocaleCodeMap; + name: string; + nameEnglish: string; + url: string; + published: boolean; + symbol: string; + family: string; + extra: string | null = null; + misc?: LocaleMisc; + constructor(init: LocaleInit) { + this.code = init.code; + this.name = init.name; + this.nameEnglish = init.nameEnglish; + this.url = init.url; + this.published = init.published; + this.symbol = init.symbol; + this.family = init.family; + this.extra = init.extra ?? null; + this.misc = init.misc; + } + + get fullName(): string { + return this.extra ? `${this.name} (${this.extra})` : this.name; + } + + get i18nLocale() { + return { + code: this.code.iso639_3, + name: this.nameEnglish, + file: `${this.code.iso639_3}.yaml`, + dir: this.misc?.dir ?? 'ltr', + language: this.code.itef ?? this.code.iso639_3, + domain: this.url.replace(/^https?:\/\//, ''), + } as LocaleObject; + } + + get config(): Record { + const configPath = `./configs/${this.code.iso639_3}.yaml`; + assert(fs.existsSync(configPath)); + const file = fs.readFileSync(configPath, 'utf8'); + return YAML.parse(file) as Record; + } + + matches(filter: string): boolean { + const filterNormalised = filter.toLocaleLowerCase(); + + return [ + this.name, + this.nameEnglish, + this.extra ?? '', + this.code.iso639_3, + this.code.wals ?? '', + this.code.itef ?? '', + ].some((value) => value.toLocaleLowerCase().includes(filterNormalised)); + } +} diff --git a/i18n/locales.ts b/i18n/locales.ts new file mode 100644 index 000000000..872af265c --- /dev/null +++ b/i18n/locales.ts @@ -0,0 +1,40 @@ +import { Locale } from './defs.ts'; + +export default [ + new Locale({ + code: { iso639_3: '_' }, + name: 'Base', + nameEnglish: 'Base', + url: 'https://pronouns.page', + published: false, + symbol: '_', + family: 'germanic', + }), + new Locale({ + code: { iso639_3: 'de', wals: 'ger' }, + name: 'Deutsch', + nameEnglish: 'German', + url: 'https://pronomen.net', + published: true, + symbol: 'ß', + family: 'germanic', + }), + new Locale({ + code: { iso639_3: 'es', wals: 'spa' }, + name: 'Español', + nameEnglish: 'Spanish', + url: 'https://pronombr.es', + published: true, + symbol: 'ñ', + family: 'romance', + }), + new Locale({ + code: { iso639_3: 'eo' }, + name: 'Esperanto', + nameEnglish: 'Esperanto', + url: 'https://pronomejo.net', + published: true, + symbol: 'ĥ', + family: 'constructed', + }), +]; diff --git a/i18n/locales/.gitkeep b/i18n/locales/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/nuxt.config.ts b/nuxt.config.ts index 7688f0e8e..0b1ba11f5 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,5 +1,5 @@ -import childProcess from 'node:child_process'; -import { promisify } from 'node:util'; +import assert from 'node:assert'; +import { readFileSync, existsSync } from 'node:fs'; import path from 'path'; import { resolvePath } from '@nuxt/kit'; @@ -7,6 +7,7 @@ import yamlPlugin from '@rollup/plugin-yaml'; import { sentryVitePlugin } from '@sentry/vite-plugin'; import { defineNuxtConfig } from 'nuxt/config'; +import Locales from './i18n/locales.ts'; import type { Config } from './locale/config.ts'; import localeDescriptions from './locale/locales.ts'; import type { Translations } from './locale/translations.ts'; @@ -15,8 +16,12 @@ import sumlPlugin from './plugins/rollup/suml.ts'; import tsvPlugin from './plugins/rollup/tsv.ts'; import { loadSuml } from './server/loader.ts'; -const exec = promisify(childProcess.exec); -const version = (await exec('git log -n 1 --pretty=format:"%H"')).stdout; +function getVersion() { + assert(existsSync('.git'), '.git does not exist, cannot get version'); + return readFileSync('.git/logs/HEAD', 'utf-8').trim().split(' ')[0].substring(8); +} + +const version = getVersion(); const config = await loadSuml('locale/_/config.suml'); const translations = await loadSuml('locale/_/translations.suml'); @@ -56,7 +61,11 @@ export default defineNuxtConfig({ '@vite-pwa/nuxt', '@nuxt/test-utils/module', '@nuxt/eslint', + '@nuxtjs/i18n', ], + imports: { + autoImport: true, + }, devtools: { enabled: true, }, @@ -271,6 +280,9 @@ export default defineNuxtConfig({ }, }, }, + i18n: { + locales: Locales.map((locale) => locale.i18nLocale), + }, pwa: { registerType: 'autoUpdate', manifest: { diff --git a/package.json b/package.json index dcd35ef02..7af0df64e 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@aws-sdk/client-s3": "^3.525.0", "@floating-ui/vue": "^1.1.5", "@fortawesome/fontawesome-pro": "https://gitlab.com/Avris/FontAwesomePro", + "@nuxtjs/i18n": "^10.0.6", "@sentry/browser": "^7.109.0", "@sentry/cli": "^2.31.0", "@sentry/node": "^7.109.0", @@ -41,6 +42,7 @@ "jose": "^5.9.6", "js-base64": "^3.5.2", "jsdom": "^26.0.0", + "lodash": "^4.17.21", "luxon": "^1.28.1", "mastodon": "^1.2.2", "minisearch": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d4e05dc0..ac3dc0bb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@fortawesome/fontawesome-pro': specifier: https://gitlab.com/Avris/FontAwesomePro version: git+https://git@gitlab.com:Avris/FontAwesomePro.git#f00db606f659dca78b143b7bcab5671b2cb459a8 + '@nuxtjs/i18n': + specifier: ^10.0.6 + version: 10.0.6(@netlify/blobs@9.1.2)(@vue/compiler-dom@3.5.18)(db0@0.3.2(sqlite3@5.1.7))(eslint@9.28.0(jiti@2.5.1))(ioredis@5.6.1)(magicast@0.3.5)(rollup@4.46.1)(vue@3.5.18(typescript@5.8.3)) '@sentry/browser': specifier: ^7.109.0 version: 7.119.1 @@ -71,6 +74,9 @@ importers: jsdom: specifier: ^26.0.0 version: 26.0.0(canvas@3.1.0) + lodash: + specifier: ^4.17.21 + version: 4.17.21 luxon: specifier: ^1.28.1 version: 1.28.1 @@ -1643,6 +1649,73 @@ packages: cpu: [x64] os: [win32] + '@intlify/bundle-utils@10.0.1': + resolution: {integrity: sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ==} + engines: {node: '>= 18'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + + '@intlify/core-base@11.1.11': + resolution: {integrity: sha512-1Z0N8jTfkcD2Luq9HNZt+GmjpFe4/4PpZF3AOzoO1u5PTtSuXZcfhwBatywbfE2ieB/B5QHIoOFmCXY2jqVKEQ==} + engines: {node: '>= 16'} + + '@intlify/core@11.1.11': + resolution: {integrity: sha512-cq3NnOQN9KSNJYcKV5YNj9IPEYi4GJbOUBy4gVbGKcxC83msSOcTvkpPq0pdMYZDqx6tPDIcr7xKT9qHjcJASQ==} + engines: {node: '>= 16'} + + '@intlify/h3@0.7.1': + resolution: {integrity: sha512-D/9+L7IzPrOa7e6R/ztepXayAq+snfzBYIwAk3RbaQsLEXwVNjC5c+WKXjni1boc/plGRegw4/m33SaFwvdEpg==} + engines: {node: '>= 20'} + + '@intlify/message-compiler@11.1.11': + resolution: {integrity: sha512-7PC6neomoc/z7a8JRjPBbu0T2TzR2MQuY5kn2e049MP7+o32Ve7O8husylkA7K9fQRe4iNXZWTPnDJ6vZdtS1Q==} + engines: {node: '>= 16'} + + '@intlify/shared@11.1.11': + resolution: {integrity: sha512-RIBFTIqxZSsxUqlcyoR7iiC632bq7kkOwYvZlvcVObHfrF4NhuKc4FKvu8iPCrEO+e3XsY7/UVpfgzg+M7ETzA==} + engines: {node: '>= 16'} + + '@intlify/unplugin-vue-i18n@6.0.8': + resolution: {integrity: sha512-Vvm3KhjE6TIBVUQAk37rBiaYy2M5OcWH0ZcI1XKEsOTeN1o0bErk+zeuXmcrcMc/73YggfI8RoxOUz9EB/69JQ==} + engines: {node: '>= 18'} + peerDependencies: + petite-vue-i18n: '*' + vue: ^3.2.25 + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + + '@intlify/utils@0.13.0': + resolution: {integrity: sha512-8i3uRdAxCGzuHwfmHcVjeLQBtysQB2aXl/ojoagDut5/gY5lvWCQ2+cnl2TiqE/fXj/D8EhWG/SLKA7qz4a3QA==} + engines: {node: '>= 18'} + + '@intlify/vue-i18n-extensions@8.0.0': + resolution: {integrity: sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==} + engines: {node: '>= 18'} + peerDependencies: + '@intlify/shared': ^9.0.0 || ^10.0.0 || ^11.0.0 + '@vue/compiler-dom': ^3.0.0 + vue: ^3.0.0 + vue-i18n: ^9.0.0 || ^10.0.0 || ^11.0.0 + peerDependenciesMeta: + '@intlify/shared': + optional: true + '@vue/compiler-dom': + optional: true + vue: + optional: true + vue-i18n: + optional: true + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -1699,6 +1772,11 @@ packages: engines: {node: '>=18'} hasBin: true + '@miyaneee/rollup-plugin-json5@1.2.0': + resolution: {integrity: sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + '@napi-rs/wasm-runtime@0.2.11': resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} @@ -1877,6 +1955,10 @@ packages: peerDependencies: vue: ^3.3.4 + '@nuxtjs/i18n@10.0.6': + resolution: {integrity: sha512-SQqJP6NDlmaoLzs7A74cx0Q3W4Vc+JSBlu3AN0q9+Q07Nvba5osab99GJEQ+PGnjaRwBFh35braUA2hRz9bdSA==} + engines: {node: '>=20.11.1'} + '@nuxtjs/plausible@1.2.0': resolution: {integrity: sha512-pjfps32fFN77BhjqHmq2Jx4XCNso9TcYnB+S4IR2qH/c26WDfYB5mQxN5pOEiWRlMkiKq+Y45mBBFtSOVKClCA==} @@ -1978,181 +2060,362 @@ packages: cpu: [arm64] os: [android] + '@oxc-parser/binding-android-arm64@0.81.0': + resolution: {integrity: sha512-nGcfHGLkpy2R4Dm1TcpDDifVIZ0q50pvFkHgcbqLpdtbyM9NDlQp1SIgRdGtKPUXAVJz3LDV8hLYvCss8Bb5wg==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [android] + '@oxc-parser/binding-darwin-arm64@0.80.0': resolution: {integrity: sha512-cVGI6NeGs1u1Ev8yO7I+zXPQuduCwwhYXd/K64uygx+OFp7fC7zSIlkGpoxFRUuSxqyipC813foAfUOwM1Y0PA==} engines: {node: '>=20.0.0'} cpu: [arm64] os: [darwin] + '@oxc-parser/binding-darwin-arm64@0.81.0': + resolution: {integrity: sha512-Xl0sB6UcAbU36d1nUs/JfPnihq0JD62xP7sFa/pML+ksxcwAEMMGzifOxNyQkInDzFp+Ql63GD7iJGbavPc5/w==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [darwin] + '@oxc-parser/binding-darwin-x64@0.80.0': resolution: {integrity: sha512-h7wRo10ywI2vLz9VljFeIaUh9u7l2l3kvF6FAteY3cPqbCA6JYUZGJaykhMqTxJoG6wrzf35sMA2ubvq67iAMA==} engines: {node: '>=20.0.0'} cpu: [x64] os: [darwin] + '@oxc-parser/binding-darwin-x64@0.81.0': + resolution: {integrity: sha512-OyHZuZjHBnZ6SOXe8fDD3i0Vf+Q0oVuaaWu2+ZtxRYDcIDTG67uMN6tg+JkCkYU7elMEJp+Tgw38uEPQWnt3eg==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [darwin] + '@oxc-parser/binding-freebsd-x64@0.80.0': resolution: {integrity: sha512-KcJ+8w/wVwd/XfDmgA9QZJAWML3vPu2O2Y8XRkf3U9VsN5n8cZ5PXMbH4NBSb3O7ctdDSvwnnuApLOz3sTHsUw==} engines: {node: '>=20.0.0'} cpu: [x64] os: [freebsd] + '@oxc-parser/binding-freebsd-x64@0.81.0': + resolution: {integrity: sha512-FLkXVaHT3PQSHEZkSB99s3Bz/E03tXu2jvspmwu34tlmLaEk3dqoAvYS/uZcBtetGXa3Y48sW/rtBwW6jE811w==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [freebsd] + '@oxc-parser/binding-linux-arm-gnueabihf@0.80.0': resolution: {integrity: sha512-5OCRxV5fX5RkVqsag55m4EFeudSZ0nSMYXgdtfR/5JZSiYmIYyPycafNNa52liqC2gx27vzrDRE4FdlG+5fhww==} engines: {node: '>=20.0.0'} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-gnueabihf@0.81.0': + resolution: {integrity: sha512-c4IXIYDmzMeuYaTtyWl9fj7L90BAN7KZ3eKKDWnmB+ekZd1QduKT8MJiLfv7/pSecxQFwzMTpZ0el++ccRprTQ==} + engines: {node: '>=20.0.0'} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.80.0': resolution: {integrity: sha512-kMa2PeA2GHMhvV617WdFzDAWCo2A00knPEe6rxFUO/Gr8TTLv1/LlEY6UqGseWrRfkkhFiAO496nRPW/6B5DCg==} engines: {node: '>=20.0.0'} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.81.0': + resolution: {integrity: sha512-Jahl5EPtdF3z8Lv8/ErCgy5tF+324nPAaFxFC+xFjOE2NdS9e8IMeWR/WbkO5pOSueEGq76GrjOX9uj9SsKqCw==} + engines: {node: '>=20.0.0'} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.80.0': resolution: {integrity: sha512-y2NEhbFfKPdOkf3ZR/3xwJFJVji6IKxwXKHUN4bEdqpcO0tkXSCiP0MzTxjEY6ql2/MXdkqK0Ym92dYsRsgsyg==} engines: {node: '>=20.0.0'} cpu: [arm64] os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.81.0': + resolution: {integrity: sha512-ufLjqUhcMMyIOzvI7BeRGWyhS5bBsuu2Mkks2wBVlpcs9dFbtlnvKv8SToiM/TTP/DFRu9SrKMVUyD0cuKVlcw==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [linux] + '@oxc-parser/binding-linux-arm64-musl@0.80.0': resolution: {integrity: sha512-j3tKausSXwHS/Ej6ct2dmKJtw0UIME2XJmj6QfPT6LyUSNTndj4yXRXuMSrCOrX9/0qH9GhmqeL9ouU27dQRFw==} engines: {node: '>=20.0.0'} cpu: [arm64] os: [linux] + '@oxc-parser/binding-linux-arm64-musl@0.81.0': + resolution: {integrity: sha512-U4pce3jsMe1s8/BLrCJPqNFdm8IJRhk9Mwf0qw4D6KLa14LT/j32b7kASnFxpy+U0X8ywHGsir8nwPEcWsvrzA==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [linux] + '@oxc-parser/binding-linux-riscv64-gnu@0.80.0': resolution: {integrity: sha512-h+uPvyTcpTFd946fGPU57sZeec2qHPUYQRZeXHB2uuZjps+9pxQ5zIz0EBM/JgBtnwdtoR93RAu1YNAVbqY5Zw==} engines: {node: '>=20.0.0'} cpu: [riscv64] os: [linux] + '@oxc-parser/binding-linux-riscv64-gnu@0.81.0': + resolution: {integrity: sha512-AjjSbkoy0oHQaGMsLg7O+gY/Vbx12K7IWbxheDO1BNL0eIwiL3xRrhKdTtaHU1KcHm2/asTtwYdndAzXQX5Jyw==} + engines: {node: '>=20.0.0'} + cpu: [riscv64] + os: [linux] + '@oxc-parser/binding-linux-s390x-gnu@0.80.0': resolution: {integrity: sha512-+u74hV+WwCPL4UBNOJaIGRozTCfZ7pM5JCEe8zAlMkKexftUzbtvW02314bVD9bqoRAL3Gg6jcZrjNjwDX2FwQ==} engines: {node: '>=20.0.0'} cpu: [s390x] os: [linux] + '@oxc-parser/binding-linux-s390x-gnu@0.81.0': + resolution: {integrity: sha512-Dx4tOdUekDMa3k18MjogWLy+b9z3RmLBf4OUSwJs5iGkr/nc7kph/N8IPI4thVw4KbhEPZOq6SKUp7Q6FhPRzA==} + engines: {node: '>=20.0.0'} + cpu: [s390x] + os: [linux] + '@oxc-parser/binding-linux-x64-gnu@0.80.0': resolution: {integrity: sha512-N9UGnWVWMlOJH+6550tqyBxd9qkMd0f4m+YRA0gly6efJTuLbPQpjkJm7pJbMu+GULcvSJ/Y0bkMAIQTtwP0vQ==} engines: {node: '>=20.0.0'} cpu: [x64] os: [linux] + '@oxc-parser/binding-linux-x64-gnu@0.81.0': + resolution: {integrity: sha512-B4RwYZqmgZJg2AV3YWR8/zyjg2t/2GwEIdd5WS4NkDxX9NzHNv1tz1uwGurPyFskO9/S0PoXDFGeESCI5GrkuA==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [linux] + '@oxc-parser/binding-linux-x64-musl@0.80.0': resolution: {integrity: sha512-l2N/GlFEri27QBMi0e53V/SlpQotIvHbz+rZZG/EO+vn58ZEr0eTG+PjJoOY/T8+TQb8nrCtRe4S/zNDpV6zSQ==} engines: {node: '>=20.0.0'} cpu: [x64] os: [linux] + '@oxc-parser/binding-linux-x64-musl@0.81.0': + resolution: {integrity: sha512-VvZlPOG03uKRYPgynVcIvR42ygNRo4kiLKaoKWdpQESSfc1uRD6fNQI5V/O9dAfEmZuTM9dhpgszr9McCeRK6A==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [linux] + '@oxc-parser/binding-wasm32-wasi@0.80.0': resolution: {integrity: sha512-5iEwQqMXU1HiRlWuD3f+8N2O3qWhS+nOFEAWgE3sjMUnTtILPJETYhaGBPqqPWg1iRO3+hE1lEBCdI91GS1CUQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@oxc-parser/binding-wasm32-wasi@0.81.0': + resolution: {integrity: sha512-uGGqDuiO9JKWq5CiNDToZJPTQx6zqp0Wlj5zsKlKuN7AslvhdyzITCAyY+mtRcNEPl+k7j5uR7aIWFFhGuqycA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@oxc-parser/binding-win32-arm64-msvc@0.80.0': resolution: {integrity: sha512-HedSH/Db7OFR2SugTbuawaV1vjgUjCXzxPquow/1FLtpRT2wASbMaRRbyD/h2n4DJ8V2zGqnV8Q+vic+VNvnKg==} engines: {node: '>=20.0.0'} cpu: [arm64] os: [win32] + '@oxc-parser/binding-win32-arm64-msvc@0.81.0': + resolution: {integrity: sha512-rWL3ieNa8nNk4XHRQ58Hrt249UanJhmzsuBOei3l5xmMleTAnTsvUxKMK4eiFw4Cdku7C5C5VJFgq7+9yPwn8Q==} + engines: {node: '>=20.0.0'} + cpu: [arm64] + os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.80.0': resolution: {integrity: sha512-SSiM0m7jG5yxVf0ivy1rF8OuTJo8ITgp1ccp2aqPZG6Qyl5QiVpf8HI1X5AvPFxts2B4Bv8U3Dip+FobqBkwcw==} engines: {node: '>=20.0.0'} cpu: [x64] os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.81.0': + resolution: {integrity: sha512-XZCXKi5SW4ekpIY6O4yDZJHiLeVCJgvr6aT+vyQbNMlSEXKOieFTUZPsp9QiohvkXZE60ZEUqX3TP+8z9A7RRQ==} + engines: {node: '>=20.0.0'} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.80.0': resolution: {integrity: sha512-xxHQm8wfCv2e8EmtaDwpMeAHOWqgQDAYg+BJouLXSQt5oTKu9TIXrgNMGSrM2fLvKmECsRd9uUFAAD+hPyootA==} + '@oxc-project/types@0.81.0': + resolution: {integrity: sha512-CnOqkybZK8z6Gx7Wb1qF7AEnSzbol1WwcIzxYOr8e91LytGOjo0wCpgoYWZo8sdbpqX+X+TJayIzo4Pv0R/KjA==} + '@oxc-transform/binding-android-arm64@0.80.0': resolution: {integrity: sha512-HAK6zIUOteptOsSRqoGu41cez7kj/OPJqBGdgdP6FFh2RFcRfh0vqefjgF69af7TjzsRxVF8itiWvFsJHrIFoA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] + '@oxc-transform/binding-android-arm64@0.81.0': + resolution: {integrity: sha512-Lli18mT/TaUsQSXL7Q08xatbOySqKhruNpI/mGvSbIHXX7TfznNbQ/zbzNftKa4tvbJnDUXz7SV9JO1wXOoYSw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + '@oxc-transform/binding-darwin-arm64@0.80.0': resolution: {integrity: sha512-sVcK4tjXbCfexlhquKVcwoKQrekQWDzRXtDwOWxm3CV1k5qGUm/rl5RAQLnXYtZVgu0U2dGEct9tNms+dzbACA==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] + '@oxc-transform/binding-darwin-arm64@0.81.0': + resolution: {integrity: sha512-EseJY9FQa1Ipow4quJ36i+1C5oEbrwJ3eKGZPw48/H5/5S+JFMHwPaE3NOF/aSLw8lkH6ghY6qKWanal2Jh8bA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + '@oxc-transform/binding-darwin-x64@0.80.0': resolution: {integrity: sha512-MWmDTJszdO3X2LvbvIZocdfJnb/wjr3zhU99IlruwxsFfVNHbl03091bXi1ABsV5dyU+47V/A5jG3xOtg5X0vQ==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] + '@oxc-transform/binding-darwin-x64@0.81.0': + resolution: {integrity: sha512-L12EE6d/TveVsPKAaqqgW5IAA3xCh64RmsmJwxIJ7fBrnUg0qHfqENcxLfaFDwjDQe5mrZczuSYfOCwhoKWZdA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + '@oxc-transform/binding-freebsd-x64@0.80.0': resolution: {integrity: sha512-fKuwj/iBfjfGePjcR9+j2TQ/7RlrUIT4ir/OAcHWYJ/kvxp4XY/juKYXo4lks/MW/dwe+UR1Lp6xiCQBuxpyIg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [freebsd] + '@oxc-transform/binding-freebsd-x64@0.81.0': + resolution: {integrity: sha512-l1LbYOq+q6VVI+lIMFd+ehkqLokMj2Zjeyza4PSMzAfXYeaIFHDGiQBn1KE+IXMNN/E4Dwj6b3LwtvdB/uLpeQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [freebsd] + '@oxc-transform/binding-linux-arm-gnueabihf@0.80.0': resolution: {integrity: sha512-R0QdfKiV+ZFiM28UnyylOEtTBFjAb4XuHvQltUSUpylXXIbGd+0Z1WF5lY3Z776Vy00HWhYj/Vo03rhvjdVDTA==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + '@oxc-transform/binding-linux-arm-gnueabihf@0.81.0': + resolution: {integrity: sha512-8xmYvtpi1GDvsp5nmvnKyjceHLyxLIn2Esolm7GFTGrLxmcPo+ZUn2huAZCuOzSbjAqNRV/nU8At/2N93tLphg==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + '@oxc-transform/binding-linux-arm-musleabihf@0.80.0': resolution: {integrity: sha512-hIfp4LwyQMRhsY9ptx4UleffoY9wZofTmnHFhZTMdb/hoE97Vuqw7Ub2cLcWMu0FYHIX8zXCMd1CJjs2MV1X3w==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + '@oxc-transform/binding-linux-arm-musleabihf@0.81.0': + resolution: {integrity: sha512-YaLHLoaWVyI458zaF3yEBKq2YIoYFftmnEHJ7mvbYwhfvH6SDwQez2TnjZEoB/UD+LX9XQfiIfX6VP35RAPHUQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + '@oxc-transform/binding-linux-arm64-gnu@0.80.0': resolution: {integrity: sha512-mOYGji1m55BD2vV5m1qnrXbdqyPp/AU9p1Rn+0hM2zkE3pVkETCPvLevSvt4rHQZBZFIWeRGo47QNsNQyaZBsg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + '@oxc-transform/binding-linux-arm64-gnu@0.81.0': + resolution: {integrity: sha512-jFTlu6KrTq/z9z/HfdsntxQz6lmrIyIOXC3iZVxyoz2MDulXHhYotKypRqBPPyblyKeMbX1BCPwwKiIyYfiXMQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + '@oxc-transform/binding-linux-arm64-musl@0.80.0': resolution: {integrity: sha512-kBBCQwr1GCkr/b0iXH+ijsg+CSPCAMSV2tu4LmG2PFaxBnZilMYfUyWHCAiskbbUADikecUfwX6hHIaQoMaixg==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + '@oxc-transform/binding-linux-arm64-musl@0.81.0': + resolution: {integrity: sha512-Tk0fOSFxYN/CH2yZLF1Cy8rKHboW7OMubGULd9HUh3Mdi25yBngmc3sOdcLscLvBvutqgdSNn7e/gdPaodDlmw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + '@oxc-transform/binding-linux-riscv64-gnu@0.80.0': resolution: {integrity: sha512-8CGJhHoD2Ttw8HtCNd/IWnGtL0Nsn448L2hZJtbDDGVUZUF4bbZFdXPnRt0QrEbupywoH6InN6q2imLous6xnw==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] + '@oxc-transform/binding-linux-riscv64-gnu@0.81.0': + resolution: {integrity: sha512-8JWsRm8tR0DDLb+1UuZM/E46MscCGlklH5hMpKQpF2cH6NzED7184S7yMmamoIIuMQEGF6coOAToukoW0ItSzQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + '@oxc-transform/binding-linux-s390x-gnu@0.80.0': resolution: {integrity: sha512-V/Lb6m5loWzvdB/qo6eYvVXidQku/PA706JbeE/PPCup8At+BwOXnZjktv7LDxrpuqnO32tZDHUUc9Y3bzOEBw==} engines: {node: '>=14.0.0'} cpu: [s390x] os: [linux] + '@oxc-transform/binding-linux-s390x-gnu@0.81.0': + resolution: {integrity: sha512-Tb08GTZR0inR0hMXoP7MQx4G5YCTObJ8GEbBHKWMtL71RJhJGnJIn63DY3uvfPbi1XNW7uSJSzQ0mWMzelPAgg==} + engines: {node: '>=14.0.0'} + cpu: [s390x] + os: [linux] + '@oxc-transform/binding-linux-x64-gnu@0.80.0': resolution: {integrity: sha512-03hHW04MQNb+ak27xo79nUkMjVu6146TNgeSapcDRATH4R0YMmXB2oPQK1K2nuBJzVZjBjH7Bus/I7tR3JasAg==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + '@oxc-transform/binding-linux-x64-gnu@0.81.0': + resolution: {integrity: sha512-RalVuZu/iDzGJeQpyQ3KaJLsD11kvb/SLqKt0MXMkq2lBfIB4A1Pdx4JL0RuvcqjLPEgEWq8GcAPiyVeTYEtVQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + '@oxc-transform/binding-linux-x64-musl@0.80.0': resolution: {integrity: sha512-BkXniuuHpo9cR2S3JDKIvmUrNvmm335owGW4rfp07HjVUsbq9e7bSnvOnyA3gXGdrPR2IgCWGi5nnXk2NN5Q0A==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + '@oxc-transform/binding-linux-x64-musl@0.81.0': + resolution: {integrity: sha512-EdbKDZ4gA5jD5YKT15HgYMCcoHGYEqO5oFGn6uREWvc4BcJ6cDrK9oyttT5CO6Y35tgnSQElHVKDWXyTMIbQlA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + '@oxc-transform/binding-wasm32-wasi@0.80.0': resolution: {integrity: sha512-jfRRXLtfSgTeJXBHj6qb+HHUd6hmYcyUNMBcTY8/k+JVsx0ThfrmCIufNlSJTt1zB+ugnMVMuQGeB0oF+aa86w==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@oxc-transform/binding-wasm32-wasi@0.81.0': + resolution: {integrity: sha512-NCAj6b7fQvxM9U3UkbfFxelx458w8t7CnyRNvxlFpQjESCaYZ6hUzxHL57TGKUq6P7jKt6xjDdoFnVwZ36SR6w==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@oxc-transform/binding-win32-arm64-msvc@0.80.0': resolution: {integrity: sha512-bofcVhlAV1AKzbE0TgDH+h813pbwWwwRhN6tv/hD4qEuWh/qEjv8Xb3Ar15xfBfyLI53FoJascuaJAFzX+IN9A==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] + '@oxc-transform/binding-win32-arm64-msvc@0.81.0': + resolution: {integrity: sha512-zwZMMQAwfRM0uk5iMHf6q1fXG8qCcKU30qOhzdrxfO/rD+2Xz/ZfRTkGJzxG2cXAaJ3TRUzYdTr6YLxgGfTIbQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + '@oxc-transform/binding-win32-x64-msvc@0.80.0': resolution: {integrity: sha512-MT6hQo9Kw/VuQUfX0fc0OpUdZesQruT0UNY9hxIcqcli7pbxMrvFBjkXo7oUb2151s/n+F4fyQOWvaR6zwxtDA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] + '@oxc-transform/binding-win32-x64-msvc@0.81.0': + resolution: {integrity: sha512-Y86Doj1eOkiY9Y+W51iJ3+/D9L+0eZ5Fl5AIQfQcHSGAjlF9geHeHxUsILZWEav12yuE/zeB5gO3AgJ801aJyQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -3268,6 +3531,15 @@ packages: '@volar/typescript@2.4.17': resolution: {integrity: sha512-3paEFNh4P5DkgNUB2YkTRrfUekN4brAXxd3Ow1syMqdIPtCZHbUy4AW99S5RO/7mzyTWPMdDSo3mqTpB/LPObQ==} + '@vue-macros/common@3.0.0-beta.15': + resolution: {integrity: sha512-DMgq/rIh1H20WYNWU7krIbEfJRYDDhy7ix64GlT4AVUJZZWCZ5pxiYVJR3A3GmWQPkn7Pg7i3oIiGqu4JGC65w==} + engines: {node: '>=20.18.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + '@vue-macros/common@3.0.0-beta.16': resolution: {integrity: sha512-8O2gWxWFiaoNkk7PGi0+p7NPGe/f8xJ3/INUufvje/RZOs7sJvlI1jnR4lydtRFa/mU0ylMXUXXjSK0fHDEYTA==} engines: {node: '>=20.18.0'} @@ -6460,6 +6732,9 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nuxt-define@1.0.0: + resolution: {integrity: sha512-CYZ2WjU+KCyCDVzjYUM4eEpMF0rkPmkpiFrybTqqQCRpUbPt2h3snswWIpFPXTi+osRCY6Og0W/XLAQgDL4FfQ==} + nuxt@4.0.3: resolution: {integrity: sha512-skRFoxY/1nphk+viF5ZEDLNEMJse0J/U5+wAYtJfYQ86EcEpLMm9v78FwdCc5IioKpgmSda6ZlLxY1DgK+6SDw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -6556,10 +6831,18 @@ packages: resolution: {integrity: sha512-lTEUQs+WBOXPUzMR/tWY4yT9D7xXwnENtRR7Epw/QcuYpV4fRveEA+zq8IGUwyyuWecl8jHrddCCuadw+kZOSA==} engines: {node: '>=20.0.0'} + oxc-parser@0.81.0: + resolution: {integrity: sha512-iceu9s70mZyjKs6V2QX7TURkJj1crnKi9csGByWvOWwrR5rwq0U0f49yIlRAzMP4t7K2gRC1MnyMZggMhiwAVg==} + engines: {node: '>=20.0.0'} + oxc-transform@0.80.0: resolution: {integrity: sha512-hWusSpynsn4MZP1KJa7e254xyVmowTUshvttpk7JfTt055YEJ+ad6memMJ9GJqPeeyydfnwwKkLy6eiwDn12xA==} engines: {node: '>=14.0.0'} + oxc-transform@0.81.0: + resolution: {integrity: sha512-Sfb7sBZJoA7GPNlgeVvwqSS+fKFG5Lu2N4CJIlKPdkBgMDwVqUPOTVrEXHYaoYilA2x0VXVwLWqjcW3CwrfzSA==} + engines: {node: '>=14.0.0'} + oxc-walker@0.4.0: resolution: {integrity: sha512-x5TJAZQD3kRnRBGZ+8uryMZUwkTYddwzBftkqyJIcmpBOXmoK/fwriRKATjZroR2d+aS7+2w1B0oz189bBTwfw==} peerDependencies: @@ -8134,6 +8417,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -8234,6 +8522,15 @@ packages: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} + unplugin-vue-router@0.14.0: + resolution: {integrity: sha512-ipjunvS5e2aFHBAUFuLbHl2aHKbXXXBhTxGT9wZx66fNVPdEQzVVitF8nODr1plANhTTa3UZ+DQu9uyLngMzoQ==} + peerDependencies: + '@vue/compiler-sfc': ^3.5.17 + vue-router: ^4.5.1 + peerDependenciesMeta: + vue-router: + optional: true + unplugin-vue-router@0.15.0: resolution: {integrity: sha512-PyGehCjd9Ny9h+Uer4McbBjjib3lHihcyUEILa7pHKl6+rh8N7sFyw4ZkV+N30Oq2zmIUG7iKs3qpL0r+gXAaQ==} peerDependencies: @@ -8589,6 +8886,12 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 + vue-i18n@11.1.11: + resolution: {integrity: sha512-LvyteQoXeQiuILbzqv13LbyBna/TEv2Ha+4ZWK2AwGHUzZ8+IBaZS0TJkCgn5izSPLcgZwXy9yyTrewCb2u/MA==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + vue-router@4.5.1: resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} peerDependencies: @@ -10622,6 +10925,80 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)))': + dependencies: + '@intlify/message-compiler': 11.1.11 + '@intlify/shared': 11.1.11 + acorn: 8.15.0 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 2.4.0 + mlly: 1.7.4 + source-map-js: 1.2.1 + yaml-eslint-parser: 1.2.3 + optionalDependencies: + vue-i18n: 11.1.11(vue@3.5.18(typescript@5.8.3)) + + '@intlify/core-base@11.1.11': + dependencies: + '@intlify/message-compiler': 11.1.11 + '@intlify/shared': 11.1.11 + + '@intlify/core@11.1.11': + dependencies: + '@intlify/core-base': 11.1.11 + '@intlify/shared': 11.1.11 + + '@intlify/h3@0.7.1': + dependencies: + '@intlify/core': 11.1.11 + '@intlify/utils': 0.13.0 + + '@intlify/message-compiler@11.1.11': + dependencies: + '@intlify/shared': 11.1.11 + source-map-js: 1.2.1 + + '@intlify/shared@11.1.11': {} + + '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.18)(eslint@9.28.0(jiti@2.5.1))(rollup@4.46.1)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.5.1)) + '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3))) + '@intlify/shared': 11.1.11 + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.18)(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3)) + '@rollup/pluginutils': 5.1.4(rollup@4.46.1) + '@typescript-eslint/scope-manager': 8.33.1 + '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.9.2) + debug: 4.4.1 + fast-glob: 3.3.3 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unplugin: 1.16.1 + vue: 3.5.18(typescript@5.8.3) + optionalDependencies: + vue-i18n: 11.1.11(vue@3.5.18(typescript@5.8.3)) + transitivePeerDependencies: + - '@vue/compiler-dom' + - eslint + - rollup + - supports-color + - typescript + + '@intlify/utils@0.13.0': {} + + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.18)(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))': + dependencies: + '@babel/parser': 7.28.0 + optionalDependencies: + '@intlify/shared': 11.1.11 + '@vue/compiler-dom': 3.5.18 + vue: 3.5.18(typescript@5.8.3) + vue-i18n: 11.1.11(vue@3.5.18(typescript@5.8.3)) + '@ioredis/commands@1.2.0': {} '@isaacs/balanced-match@4.0.1': {} @@ -10689,6 +11066,12 @@ snapshots: - encoding - supports-color + '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.46.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.46.1) + json5: 2.2.3 + rollup: 4.46.1 + '@napi-rs/wasm-runtime@0.2.11': dependencies: '@emnapi/core': 1.4.5 @@ -11158,6 +11541,63 @@ snapshots: - vue-tsc - yaml + '@nuxtjs/i18n@10.0.6(@netlify/blobs@9.1.2)(@vue/compiler-dom@3.5.18)(db0@0.3.2(sqlite3@5.1.7))(eslint@9.28.0(jiti@2.5.1))(ioredis@5.6.1)(magicast@0.3.5)(rollup@4.46.1)(vue@3.5.18(typescript@5.8.3))': + dependencies: + '@intlify/core': 11.1.11 + '@intlify/h3': 0.7.1 + '@intlify/shared': 11.1.11 + '@intlify/unplugin-vue-i18n': 6.0.8(@vue/compiler-dom@3.5.18)(eslint@9.28.0(jiti@2.5.1))(rollup@4.46.1)(typescript@5.9.2)(vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3)) + '@intlify/utils': 0.13.0 + '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.46.1) + '@nuxt/kit': 4.0.3(magicast@0.3.5) + '@rollup/plugin-yaml': 4.1.2(rollup@4.46.1) + '@vue/compiler-sfc': 3.5.18 + cookie-es: 2.0.0 + defu: 6.1.4 + devalue: 5.1.1 + h3: 1.15.4 + knitwork: 1.2.0 + magic-string: 0.30.17 + mlly: 1.7.4 + nuxt-define: 1.0.0 + oxc-parser: 0.81.0 + oxc-transform: 0.81.0 + oxc-walker: 0.4.0(oxc-parser@0.81.0) + pathe: 2.0.3 + typescript: 5.9.2 + ufo: 1.6.1 + unplugin: 2.3.5 + unplugin-vue-router: 0.14.0(@vue/compiler-sfc@3.5.18)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3)) + unstorage: 1.16.1(@netlify/blobs@9.1.2)(db0@0.3.2(sqlite3@5.1.7))(ioredis@5.6.1) + vue-i18n: 11.1.11(vue@3.5.18(typescript@5.8.3)) + vue-router: 4.5.1(vue@3.5.18(typescript@5.8.3)) + 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/kv' + - '@vue/compiler-dom' + - aws4fetch + - db0 + - eslint + - idb-keyval + - ioredis + - magicast + - petite-vue-i18n + - rollup + - supports-color + - uploadthing + - vue + '@nuxtjs/plausible@1.2.0(magicast@0.3.5)': dependencies: '@barbapapazes/plausible-tracker': 0.5.6 @@ -11219,99 +11659,195 @@ snapshots: '@oxc-parser/binding-android-arm64@0.80.0': optional: true + '@oxc-parser/binding-android-arm64@0.81.0': + optional: true + '@oxc-parser/binding-darwin-arm64@0.80.0': optional: true + '@oxc-parser/binding-darwin-arm64@0.81.0': + optional: true + '@oxc-parser/binding-darwin-x64@0.80.0': optional: true + '@oxc-parser/binding-darwin-x64@0.81.0': + optional: true + '@oxc-parser/binding-freebsd-x64@0.80.0': optional: true + '@oxc-parser/binding-freebsd-x64@0.81.0': + optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.80.0': optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.81.0': + optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.80.0': optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.81.0': + optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.80.0': optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.81.0': + optional: true + '@oxc-parser/binding-linux-arm64-musl@0.80.0': optional: true + '@oxc-parser/binding-linux-arm64-musl@0.81.0': + optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.80.0': optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.81.0': + optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.80.0': optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.81.0': + optional: true + '@oxc-parser/binding-linux-x64-gnu@0.80.0': optional: true + '@oxc-parser/binding-linux-x64-gnu@0.81.0': + optional: true + '@oxc-parser/binding-linux-x64-musl@0.80.0': optional: true + '@oxc-parser/binding-linux-x64-musl@0.81.0': + optional: true + '@oxc-parser/binding-wasm32-wasi@0.80.0': dependencies: '@napi-rs/wasm-runtime': 1.0.1 optional: true + '@oxc-parser/binding-wasm32-wasi@0.81.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.1 + optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.80.0': optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.81.0': + optional: true + '@oxc-parser/binding-win32-x64-msvc@0.80.0': optional: true + '@oxc-parser/binding-win32-x64-msvc@0.81.0': + optional: true + '@oxc-project/types@0.80.0': {} + '@oxc-project/types@0.81.0': {} + '@oxc-transform/binding-android-arm64@0.80.0': optional: true + '@oxc-transform/binding-android-arm64@0.81.0': + optional: true + '@oxc-transform/binding-darwin-arm64@0.80.0': optional: true + '@oxc-transform/binding-darwin-arm64@0.81.0': + optional: true + '@oxc-transform/binding-darwin-x64@0.80.0': optional: true + '@oxc-transform/binding-darwin-x64@0.81.0': + optional: true + '@oxc-transform/binding-freebsd-x64@0.80.0': optional: true + '@oxc-transform/binding-freebsd-x64@0.81.0': + optional: true + '@oxc-transform/binding-linux-arm-gnueabihf@0.80.0': optional: true + '@oxc-transform/binding-linux-arm-gnueabihf@0.81.0': + optional: true + '@oxc-transform/binding-linux-arm-musleabihf@0.80.0': optional: true + '@oxc-transform/binding-linux-arm-musleabihf@0.81.0': + optional: true + '@oxc-transform/binding-linux-arm64-gnu@0.80.0': optional: true + '@oxc-transform/binding-linux-arm64-gnu@0.81.0': + optional: true + '@oxc-transform/binding-linux-arm64-musl@0.80.0': optional: true + '@oxc-transform/binding-linux-arm64-musl@0.81.0': + optional: true + '@oxc-transform/binding-linux-riscv64-gnu@0.80.0': optional: true + '@oxc-transform/binding-linux-riscv64-gnu@0.81.0': + optional: true + '@oxc-transform/binding-linux-s390x-gnu@0.80.0': optional: true + '@oxc-transform/binding-linux-s390x-gnu@0.81.0': + optional: true + '@oxc-transform/binding-linux-x64-gnu@0.80.0': optional: true + '@oxc-transform/binding-linux-x64-gnu@0.81.0': + optional: true + '@oxc-transform/binding-linux-x64-musl@0.80.0': optional: true + '@oxc-transform/binding-linux-x64-musl@0.81.0': + optional: true + '@oxc-transform/binding-wasm32-wasi@0.80.0': dependencies: '@napi-rs/wasm-runtime': 1.0.1 optional: true + '@oxc-transform/binding-wasm32-wasi@0.81.0': + dependencies: + '@napi-rs/wasm-runtime': 1.0.1 + optional: true + '@oxc-transform/binding-win32-arm64-msvc@0.80.0': optional: true + '@oxc-transform/binding-win32-arm64-msvc@0.81.0': + optional: true + '@oxc-transform/binding-win32-x64-msvc@0.80.0': optional: true + '@oxc-transform/binding-win32-x64-msvc@0.81.0': + optional: true + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -12384,6 +12920,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.33.1(typescript@5.9.2)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.9.2) + '@typescript-eslint/types': 8.33.1 + debug: 4.4.1 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.33.1': dependencies: '@typescript-eslint/types': 8.33.1 @@ -12393,6 +12938,10 @@ snapshots: dependencies: typescript: 5.8.3 + '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 + '@typescript-eslint/type-utils@8.33.1(eslint@9.28.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) @@ -12422,6 +12971,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.33.1(typescript@5.9.2)': + dependencies: + '@typescript-eslint/project-service': 8.33.1(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.9.2) + '@typescript-eslint/types': 8.33.1 + '@typescript-eslint/visitor-keys': 8.33.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.33.1(eslint@9.28.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.5.1)) @@ -12638,6 +13203,16 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 + '@vue-macros/common@3.0.0-beta.15(vue@3.5.18(typescript@5.8.3))': + dependencies: + '@vue/compiler-sfc': 3.5.18 + ast-kit: 2.1.1 + local-pkg: 1.1.1 + magic-string-ast: 1.0.0 + unplugin-utils: 0.2.4 + optionalDependencies: + vue: 3.5.18(typescript@5.8.3) + '@vue-macros/common@3.0.0-beta.16(vue@3.5.18(typescript@5.8.3))': dependencies: '@vue/compiler-sfc': 3.5.18 @@ -16280,6 +16855,8 @@ snapshots: dependencies: boolbase: 1.0.0 + nuxt-define@1.0.0: {} + nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.15.29)(@vue/compiler-sfc@3.5.18)(db0@0.3.2(sqlite3@5.1.7))(encoding@0.1.13)(eslint@9.28.0(jiti@2.5.1))(ioredis@5.6.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.46.1)(sass-embedded@1.89.2)(sqlite3@5.1.7)(terser@5.33.0)(typescript@5.8.3)(vite@7.0.6(@types/node@22.15.29)(jiti@2.5.1)(sass-embedded@1.89.2)(terser@5.33.0)(yaml@2.8.0))(vue-tsc@3.0.1(typescript@5.8.3))(yaml@2.8.0): dependencies: '@nuxt/cli': 3.27.0(magicast@0.3.5) @@ -16526,6 +17103,26 @@ snapshots: '@oxc-parser/binding-win32-arm64-msvc': 0.80.0 '@oxc-parser/binding-win32-x64-msvc': 0.80.0 + oxc-parser@0.81.0: + dependencies: + '@oxc-project/types': 0.81.0 + optionalDependencies: + '@oxc-parser/binding-android-arm64': 0.81.0 + '@oxc-parser/binding-darwin-arm64': 0.81.0 + '@oxc-parser/binding-darwin-x64': 0.81.0 + '@oxc-parser/binding-freebsd-x64': 0.81.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.81.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.81.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.81.0 + '@oxc-parser/binding-linux-arm64-musl': 0.81.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.81.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.81.0 + '@oxc-parser/binding-linux-x64-gnu': 0.81.0 + '@oxc-parser/binding-linux-x64-musl': 0.81.0 + '@oxc-parser/binding-wasm32-wasi': 0.81.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.81.0 + '@oxc-parser/binding-win32-x64-msvc': 0.81.0 + oxc-transform@0.80.0: optionalDependencies: '@oxc-transform/binding-android-arm64': 0.80.0 @@ -16544,12 +17141,36 @@ snapshots: '@oxc-transform/binding-win32-arm64-msvc': 0.80.0 '@oxc-transform/binding-win32-x64-msvc': 0.80.0 + oxc-transform@0.81.0: + optionalDependencies: + '@oxc-transform/binding-android-arm64': 0.81.0 + '@oxc-transform/binding-darwin-arm64': 0.81.0 + '@oxc-transform/binding-darwin-x64': 0.81.0 + '@oxc-transform/binding-freebsd-x64': 0.81.0 + '@oxc-transform/binding-linux-arm-gnueabihf': 0.81.0 + '@oxc-transform/binding-linux-arm-musleabihf': 0.81.0 + '@oxc-transform/binding-linux-arm64-gnu': 0.81.0 + '@oxc-transform/binding-linux-arm64-musl': 0.81.0 + '@oxc-transform/binding-linux-riscv64-gnu': 0.81.0 + '@oxc-transform/binding-linux-s390x-gnu': 0.81.0 + '@oxc-transform/binding-linux-x64-gnu': 0.81.0 + '@oxc-transform/binding-linux-x64-musl': 0.81.0 + '@oxc-transform/binding-wasm32-wasi': 0.81.0 + '@oxc-transform/binding-win32-arm64-msvc': 0.81.0 + '@oxc-transform/binding-win32-x64-msvc': 0.81.0 + oxc-walker@0.4.0(oxc-parser@0.80.0): dependencies: estree-walker: 3.0.3 magic-regexp: 0.10.0 oxc-parser: 0.80.0 + oxc-walker@0.4.0(oxc-parser@0.81.0): + dependencies: + estree-walker: 3.0.3 + magic-regexp: 0.10.0 + oxc-parser: 0.81.0 + p-event@6.0.1: dependencies: p-timeout: 6.1.4 @@ -18198,6 +18819,10 @@ snapshots: dependencies: typescript: 5.8.3 + ts-api-utils@2.1.0(typescript@5.9.2): + dependencies: + typescript: 5.9.2 + ts-json-schema-generator@1.5.1: dependencies: '@types/json-schema': 7.0.15 @@ -18277,6 +18902,8 @@ snapshots: typescript@5.8.3: {} + typescript@5.9.2: {} + uc.micro@2.1.0: {} ufo@1.6.1: {} @@ -18389,6 +19016,28 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 + unplugin-vue-router@0.14.0(@vue/compiler-sfc@3.5.18)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3)): + dependencies: + '@vue-macros/common': 3.0.0-beta.15(vue@3.5.18(typescript@5.8.3)) + '@vue/compiler-sfc': 3.5.18 + ast-walker-scope: 0.8.1 + chokidar: 4.0.3 + fast-glob: 3.3.3 + json5: 2.2.3 + local-pkg: 1.1.1 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.3 + picomatch: 4.0.3 + scule: 1.3.0 + unplugin: 2.3.5 + unplugin-utils: 0.2.4 + yaml: 2.8.0 + optionalDependencies: + vue-router: 4.5.1(vue@3.5.18(typescript@5.8.3)) + transitivePeerDependencies: + - vue + unplugin-vue-router@0.15.0(@vue/compiler-sfc@3.5.18)(typescript@5.8.3)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3)): dependencies: '@vue-macros/common': 3.0.0-beta.16(vue@3.5.18(typescript@5.8.3)) @@ -18750,6 +19399,13 @@ snapshots: transitivePeerDependencies: - supports-color + vue-i18n@11.1.11(vue@3.5.18(typescript@5.8.3)): + dependencies: + '@intlify/core-base': 11.1.11 + '@intlify/shared': 11.1.11 + '@vue/devtools-api': 6.6.4 + vue: 3.5.18(typescript@5.8.3) + vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)): dependencies: '@vue/devtools-api': 6.6.4