From 1c97180c4b6b01071d124b470c1b680377bd3d53 Mon Sep 17 00:00:00 2001 From: VChet <17050347+VChet@users.noreply.github.com> Date: Fri, 18 Oct 2024 23:43:56 +0500 Subject: [PATCH] feat(seo): add title and description to meta tags --- package.json | 11 +- pnpm-lock.yaml | 596 ++++++++++++++++++--------------- src/constants/messages.ts | 4 + src/helpers/router.ts | 14 + src/main.ts | 4 + src/router.ts | 6 +- src/views/BirthsignView.vue | 13 + src/views/HolidayView.vue | 13 + src/views/SummoningDayView.vue | 13 + 9 files changed, 388 insertions(+), 286 deletions(-) create mode 100644 src/helpers/router.ts diff --git a/package.json b/package.json index c013c3c..f21d98d 100644 --- a/package.json +++ b/package.json @@ -18,33 +18,34 @@ }, "dependencies": { "@intlify/unplugin-vue-i18n": "^5.2.0", + "@unhead/vue": "^1.11.10", "@vitejs/plugin-vue": "^5.1.4", "@vueuse/core": "^11.1.0", "dayjs": "^1.11.13", "v-wave": "^3.0.2", - "vite": "^5.4.8", + "vite": "^5.4.9", "vite-plugin-pwa": "^0.20.5", "vue": "^3.5.12", "vue-i18n": "^10.0.4", "vue-router": "^4.4.5" }, "devDependencies": { - "@antfu/eslint-config": "^3.7.3", + "@antfu/eslint-config": "^3.8.0", "@localazy/cli": "^1.7.14", "@stylistic/stylelint-plugin": "^3.1.1", "@tabler/icons-vue": "^3.19.0", - "@types/node": "^22.7.5", + "@types/node": "^22.7.6", "eslint": "^9.12.0", "postcss-html": "^1.7.0", "postcss-scss": "^4.0.9", - "sass": "^1.79.5", + "sass": "^1.80.2", "stylelint": "^16.10.0", "stylelint-config-recess-order": "^5.1.1", "stylelint-config-standard-scss": "^13.1.0", "stylelint-declaration-block-no-ignored-properties": "^2.8.0", "stylelint-order": "^6.0.4", "stylelint-rem-over-px": "^1.0.1", - "typescript": "^5.5.4", + "typescript": "^5.6.3", "vue-tsc": "^2.1.6", "workbox-core": "^7.1.0", "workbox-precaching": "^7.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20a3840..555a7c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,50 +10,53 @@ importers: dependencies: '@intlify/unplugin-vue-i18n': specifier: ^5.2.0 - version: 5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@1.21.6))(rollup@2.79.2)(typescript@5.5.4)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)))(vue@3.5.12(typescript@5.5.4))(webpack-sources@3.2.3) + version: 5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@1.21.6))(rollup@2.79.2)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3) + '@unhead/vue': + specifier: ^1.11.10 + version: 1.11.10(vue@3.5.12(typescript@5.6.3)) '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.1.4(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5))(vue@3.5.12(typescript@5.5.4)) + version: 5.1.4(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5))(vue@3.5.12(typescript@5.6.3)) '@vueuse/core': specifier: ^11.1.0 - version: 11.1.0(vue@3.5.12(typescript@5.5.4)) + version: 11.1.0(vue@3.5.12(typescript@5.6.3)) dayjs: specifier: ^1.11.13 version: 1.11.13 v-wave: specifier: ^3.0.2 - version: 3.0.2(rollup@2.79.2)(vue@3.5.12(typescript@5.5.4))(webpack-sources@3.2.3) + version: 3.0.2(rollup@2.79.2)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3) vite: - specifier: ^5.4.8 - version: 5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5) + specifier: ^5.4.9 + version: 5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5) vite-plugin-pwa: specifier: ^0.20.5 - version: 0.20.5(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5))(workbox-build@7.1.1)(workbox-window@7.1.0) + version: 0.20.5(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5))(workbox-build@7.1.1)(workbox-window@7.1.0) vue: specifier: ^3.5.12 - version: 3.5.12(typescript@5.5.4) + version: 3.5.12(typescript@5.6.3) vue-i18n: specifier: ^10.0.4 - version: 10.0.4(vue@3.5.12(typescript@5.5.4)) + version: 10.0.4(vue@3.5.12(typescript@5.6.3)) vue-router: specifier: ^4.4.5 - version: 4.4.5(vue@3.5.12(typescript@5.5.4)) + version: 4.4.5(vue@3.5.12(typescript@5.6.3)) devDependencies: '@antfu/eslint-config': - specifier: ^3.7.3 - version: 3.7.3(@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.5.12)(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + specifier: ^3.8.0 + version: 3.8.0(@typescript-eslint/utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(@vue/compiler-sfc@3.5.12)(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) '@localazy/cli': specifier: ^1.7.14 version: 1.7.14 '@stylistic/stylelint-plugin': specifier: ^3.1.1 - version: 3.1.1(stylelint@16.10.0(typescript@5.5.4)) + version: 3.1.1(stylelint@16.10.0(typescript@5.6.3)) '@tabler/icons-vue': specifier: ^3.19.0 - version: 3.19.0(vue@3.5.12(typescript@5.5.4)) + version: 3.19.0(vue@3.5.12(typescript@5.6.3)) '@types/node': - specifier: ^22.7.5 - version: 22.7.5 + specifier: ^22.7.6 + version: 22.7.6 eslint: specifier: ^9.12.0 version: 9.12.0(jiti@1.21.6) @@ -64,32 +67,32 @@ importers: specifier: ^4.0.9 version: 4.0.9(postcss@8.4.41) sass: - specifier: ^1.79.5 - version: 1.79.5 + specifier: ^1.80.2 + version: 1.80.2 stylelint: specifier: ^16.10.0 - version: 16.10.0(typescript@5.5.4) + version: 16.10.0(typescript@5.6.3) stylelint-config-recess-order: specifier: ^5.1.1 - version: 5.1.1(stylelint@16.10.0(typescript@5.5.4)) + version: 5.1.1(stylelint@16.10.0(typescript@5.6.3)) stylelint-config-standard-scss: specifier: ^13.1.0 - version: 13.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.5.4)) + version: 13.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.6.3)) stylelint-declaration-block-no-ignored-properties: specifier: ^2.8.0 - version: 2.8.0(stylelint@16.10.0(typescript@5.5.4)) + version: 2.8.0(stylelint@16.10.0(typescript@5.6.3)) stylelint-order: specifier: ^6.0.4 - version: 6.0.4(stylelint@16.10.0(typescript@5.5.4)) + version: 6.0.4(stylelint@16.10.0(typescript@5.6.3)) stylelint-rem-over-px: specifier: ^1.0.1 - version: 1.0.1(stylelint@16.10.0(typescript@5.5.4)) + version: 1.0.1(stylelint@16.10.0(typescript@5.6.3)) typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.6.3 + version: 5.6.3 vue-tsc: specifier: ^2.1.6 - version: 2.1.6(typescript@5.5.4) + version: 2.1.6(typescript@5.6.3) workbox-core: specifier: ^7.1.0 version: 7.1.0 @@ -112,8 +115,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@3.7.3': - resolution: {integrity: sha512-vzhKtzQT+f/xBV8T5U8SFy3D7uAqL2CEcjsJVqtA7F8tdKvGuC/96uWeEKMHk5lRfijgj+xRvb+c4qQn60YlIA==} + '@antfu/eslint-config@3.8.0': + resolution: {integrity: sha512-O5QSufPHpKTm0wk1OQ5c2mOZVzCqYV3hIDrt5zt+cOWqiG8YXLPkSOD4fFwjomATtOuUbcLUwkcgY5dErM7aIw==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.5.8 @@ -123,7 +126,7 @@ packages: eslint: ^9.10.0 eslint-plugin-astro: ^1.2.0 eslint-plugin-format: '>=0.1.0' - eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-hooks: ^5.0.0 eslint-plugin-react-refresh: ^0.4.4 eslint-plugin-solid: ^0.14.3 eslint-plugin-svelte: '>=2.35.1' @@ -784,6 +787,10 @@ packages: resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -958,11 +965,9 @@ packages: resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@6.1.0': - resolution: {integrity: sha512-cX1tyD+aIbhzKrCKe/9M5s2jZhldWGOR+cy7cIVpxG9RkoaN4XU+gG3dy6oEKtBFXjDx06GtP0OGO7jgbqa2DA==} + '@eslint/markdown@6.2.1': + resolution: {integrity: sha512-cKVd110hG4ICHmWhIwZJfKmmJBvbiDWyrHODJknAtudKgZtlROGoLX9UEOA0o746zC0hCY4UV4vR+aOGW9S6JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=9' '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} @@ -1313,8 +1318,8 @@ packages: '@sinonjs/text-encoding@0.7.2': resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} - '@stylistic/eslint-plugin@2.8.0': - resolution: {integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==} + '@stylistic/eslint-plugin@2.9.0': + resolution: {integrity: sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1357,8 +1362,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/node@22.7.6': + resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1375,8 +1380,8 @@ packages: '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - '@typescript-eslint/eslint-plugin@8.8.1': - resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} + '@typescript-eslint/eslint-plugin@8.10.0': + resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1386,8 +1391,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.8.1': - resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} + '@typescript-eslint/parser@8.10.0': + resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1400,16 +1405,16 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.5.0': - resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} + '@typescript-eslint/scope-manager@8.10.0': + resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/scope-manager@8.8.1': resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.8.1': - resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} + '@typescript-eslint/type-utils@8.10.0': + resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1421,8 +1426,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.5.0': - resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} + '@typescript-eslint/types@8.10.0': + resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/types@8.8.1': @@ -1438,8 +1443,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.5.0': - resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} + '@typescript-eslint/typescript-estree@8.10.0': + resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1456,8 +1461,8 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.5.0': - resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} + '@typescript-eslint/utils@8.10.0': + resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1472,14 +1477,28 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.5.0': - resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} + '@typescript-eslint/visitor-keys@8.10.0': + resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/visitor-keys@8.8.1': resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unhead/dom@1.11.10': + resolution: {integrity: sha512-nL1mdRzYVATZIYauK15zOI2YyM3YxCLfhbTqljEjDFJeiJUzTTi+a//5FHiUk84ewSucFnrwHNey/pEXFlyY1A==} + + '@unhead/schema@1.11.10': + resolution: {integrity: sha512-lXh7cm5XtFaw3gc+ZVXTSfIHXiBpAywbjtEiOsz5TR4GxOjj2rtfOAl4C3Difk1yupP6L2otYmOZdn/i8EXSJg==} + + '@unhead/shared@1.11.10': + resolution: {integrity: sha512-YQgZcOyo1id7drUeDPGn0R83pirvIcV+Car3/m7ZfCLL1Syab6uXmRckVRd69yVbUL4eirIm9IzzmvzM/OuGuw==} + + '@unhead/vue@1.11.10': + resolution: {integrity: sha512-v6ddp4YEQCNILhYrx37Yt0GKRIFeTrb3VSmTbjh+URT+ua1mwgmNFTfl2ZldtTtri3tEkwSG1/5wLRq20ma70g==} + peerDependencies: + vue: '>=2.7 || >=3' + '@vitejs/plugin-vue@5.1.4': resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1799,8 +1818,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.38.0: - resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -2067,8 +2086,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-jsdoc@50.3.2: - resolution: {integrity: sha512-TjgZocG53N3a84PdCFGqVMWLWwDitOUuKjlJftwTu/iTiD7N/Q2Q3eEy/Q4GfJqpM4rTJCkzUYWQfol6RZNDcA==} + eslint-plugin-jsdoc@50.4.3: + resolution: {integrity: sha512-uWtwFxGRv6B8sU63HZM5dAGDhgsatb+LONwmILZJhdRALLOkCX2HFZhdL/Kw2ls8SQMAVEfK+LmnEfxInRN8HA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2089,8 +2108,8 @@ packages: resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@3.8.0: - resolution: {integrity: sha512-BYJWbQVOjvIGK9V1xUfn790HuvkePjxti8epOi1H6sdzo0N4RehBmQ8coHPbgA/f12BUG1NIoDtQhI9mUm+o2A==} + eslint-plugin-perfectionist@3.9.1: + resolution: {integrity: sha512-9WRzf6XaAxF4Oi5t/3TqKP5zUjERhasHmLFHin2Yw6ZAp/EP/EVA2dr3BhQrrHWCm5SzTMZf0FcjDnBkO2xFkA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: astro-eslint-parser: ^1.0.2 @@ -2120,8 +2139,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-plugin-unicorn@55.0.0: - resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} + eslint-plugin-unicorn@56.0.0: + resolution: {integrity: sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' @@ -2135,8 +2154,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@9.28.0: - resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==} + eslint-plugin-vue@9.29.0: + resolution: {integrity: sha512-hamyjrBhNH6Li6R1h1VF9KHfshJlKgKEg3ARbGTn72CMNDSMhWbgC7NdkRDEh25AFW+4SDATzyNM+3gWuZii8g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2165,10 +2184,6 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@4.1.0: resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2183,10 +2198,6 @@ packages: jiti: optional: true - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@10.2.0: resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2393,8 +2404,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} engines: {node: '>=18'} globalthis@1.0.4: @@ -3115,6 +3126,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -3184,10 +3198,6 @@ packages: resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.45: - resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} @@ -3325,8 +3335,8 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - sass@1.79.5: - resolution: {integrity: sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==} + sass@1.80.2: + resolution: {integrity: sha512-9wXY8cGBlUmoUoT+vwOZOFCiS+naiWVjqlreN9ar9PudXbGwlMTFwCR5K9kB4dFumJ6ib98wZyAObJKsWf1nAA==} engines: {node: '>=14.0.0'} hasBin: true @@ -3680,8 +3690,8 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true @@ -3700,6 +3710,9 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unhead@1.11.10: + resolution: {integrity: sha512-hypXrAI47wE3wIhkze0RMPGAWcoo45Q1+XzdqLD/OnTCzjFXQrpuE4zBy8JRexyrqp+Ud2+nFTUNf/mjfFSymw==} + unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -3796,8 +3809,8 @@ packages: '@vite-pwa/assets-generator': optional: true - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4017,6 +4030,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zhead@2.2.4: + resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -4027,40 +4043,40 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@3.7.3(@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.5.12)(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@antfu/eslint-config@3.8.0(@typescript-eslint/utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(@vue/compiler-sfc@3.5.12)(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.12.0(jiti@1.21.6)) - '@eslint/markdown': 6.1.0(eslint@9.12.0(jiti@1.21.6)) - '@stylistic/eslint-plugin': 2.8.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + '@eslint/markdown': 6.2.1 + '@stylistic/eslint-plugin': 2.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) eslint-config-flat-gitignore: 0.3.0(eslint@9.12.0(jiti@1.21.6)) eslint-flat-config-utils: 0.4.0 eslint-merge-processors: 0.1.0(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-antfu: 2.7.0(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-command: 0.2.6(eslint@9.12.0(jiti@1.21.6)) - eslint-plugin-import-x: 4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - eslint-plugin-jsdoc: 50.3.2(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-import-x: 4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + eslint-plugin-jsdoc: 50.4.3(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-jsonc: 2.16.0(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-n: 17.11.1(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 3.8.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@1.21.6))) + eslint-plugin-perfectionist: 3.9.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)(vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@1.21.6))) eslint-plugin-regexp: 2.6.0(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-toml: 0.11.1(eslint@9.12.0(jiti@1.21.6)) - eslint-plugin-unicorn: 55.0.0(eslint@9.12.0(jiti@1.21.6)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6)) - eslint-plugin-vue: 9.28.0(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-unicorn: 56.0.0(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)) + eslint-plugin-vue: 9.29.0(eslint@9.12.0(jiti@1.21.6)) eslint-plugin-yml: 1.14.0(eslint@9.12.0(jiti@1.21.6)) eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.12)(eslint@9.12.0(jiti@1.21.6)) - globals: 15.9.0 + globals: 15.11.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 parse-gitignore: 2.0.0 - picocolors: 1.1.0 + picocolors: 1.1.1 toml-eslint-parser: 0.10.0 vue-eslint-parser: 9.4.3(eslint@9.12.0(jiti@1.21.6)) yaml-eslint-parser: 1.2.3 @@ -4806,7 +4822,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.0 + core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4852,13 +4868,13 @@ snapshots: '@clack/core@0.3.4': dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 - picocolors: 1.1.0 + picocolors: 1.1.1 sisteransi: 1.0.5 '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)': @@ -4884,6 +4900,12 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -4994,9 +5016,9 @@ snapshots: '@eslint/js@9.12.0': {} - '@eslint/markdown@6.1.0(eslint@9.12.0(jiti@1.21.6))': + '@eslint/markdown@6.2.1': dependencies: - eslint: 9.12.0(jiti@1.21.6) + '@eslint/plugin-kit': 0.2.0 mdast-util-from-markdown: 2.0.1 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 @@ -5020,7 +5042,7 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@intlify/bundle-utils@9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)))': + '@intlify/bundle-utils@9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))': dependencies: '@intlify/message-compiler': 10.0.0 '@intlify/shared': 10.0.0 @@ -5029,10 +5051,10 @@ snapshots: estree-walker: 2.0.2 jsonc-eslint-parser: 2.4.0 mlly: 1.7.1 - source-map-js: 1.2.0 + source-map-js: 1.2.1 yaml-eslint-parser: 1.2.3 optionalDependencies: - vue-i18n: 10.0.4(vue@3.5.12(typescript@5.5.4)) + vue-i18n: 10.0.4(vue@3.5.12(typescript@5.6.3)) '@intlify/core-base@10.0.4': dependencies: @@ -5053,15 +5075,15 @@ snapshots: '@intlify/shared@10.0.4': {} - '@intlify/unplugin-vue-i18n@5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@1.21.6))(rollup@2.79.2)(typescript@5.5.4)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)))(vue@3.5.12(typescript@5.5.4))(webpack-sources@3.2.3)': + '@intlify/unplugin-vue-i18n@5.2.0(@vue/compiler-dom@3.5.12)(eslint@9.12.0(jiti@1.21.6))(rollup@2.79.2)(typescript@5.6.3)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) - '@intlify/bundle-utils': 9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4))) + '@intlify/bundle-utils': 9.0.0-beta.0(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3))) '@intlify/shared': 10.0.0 - '@intlify/vue-i18n-extensions': 7.0.0(@intlify/shared@10.0.0)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)))(vue@3.5.12(typescript@5.5.4)) + '@intlify/vue-i18n-extensions': 7.0.0(@intlify/shared@10.0.0)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3)) '@rollup/pluginutils': 5.1.0(rollup@2.79.2) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) debug: 4.3.6 fast-glob: 3.3.2 js-yaml: 4.1.0 @@ -5070,9 +5092,9 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.0 unplugin: 1.14.1(webpack-sources@3.2.3) - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) optionalDependencies: - vue-i18n: 10.0.4(vue@3.5.12(typescript@5.5.4)) + vue-i18n: 10.0.4(vue@3.5.12(typescript@5.6.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -5081,14 +5103,14 @@ snapshots: - typescript - webpack-sources - '@intlify/vue-i18n-extensions@7.0.0(@intlify/shared@10.0.0)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)))(vue@3.5.12(typescript@5.5.4))': + '@intlify/vue-i18n-extensions@7.0.0(@intlify/shared@10.0.0)(@vue/compiler-dom@3.5.12)(vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)))(vue@3.5.12(typescript@5.6.3))': dependencies: '@babel/parser': 7.25.3 optionalDependencies: '@intlify/shared': 10.0.0 '@vue/compiler-dom': 3.5.12 - vue: 3.5.12(typescript@5.5.4) - vue-i18n: 10.0.4(vue@3.5.12(typescript@5.5.4)) + vue: 3.5.12(typescript@5.6.3) + vue-i18n: 10.0.4(vue@3.5.12(typescript@5.6.3)) '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -5341,19 +5363,19 @@ snapshots: '@sinonjs/text-encoding@0.7.2': {} - '@stylistic/eslint-plugin@2.8.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.9.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/utils': 8.5.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 estraverse: 5.3.0 picomatch: 4.0.2 transitivePeerDependencies: - supports-color - typescript - '@stylistic/stylelint-plugin@3.1.1(stylelint@16.10.0(typescript@5.5.4))': + '@stylistic/stylelint-plugin@3.1.1(stylelint@16.10.0(typescript@5.6.3))': dependencies: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) '@csstools/css-tokenizer': 3.0.1 @@ -5362,7 +5384,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 style-search: 0.1.0 - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: @@ -5371,10 +5393,10 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.11 - '@tabler/icons-vue@3.19.0(vue@3.5.12(typescript@5.5.4))': + '@tabler/icons-vue@3.19.0(vue@3.5.12(typescript@5.6.3))': dependencies: '@tabler/icons': 3.19.0 - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) '@tabler/icons@3.19.0': {} @@ -5396,7 +5418,7 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.7.5': + '@types/node@22.7.6': dependencies: undici-types: 6.19.8 @@ -5410,34 +5432,34 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.8.1 - '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.8.1 + '@typescript-eslint/parser': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/type-utils': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 eslint: 9.12.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.8.1 - '@typescript-eslint/types': 8.8.1 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.8.1 - debug: 4.3.6 + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7 eslint: 9.12.0(jiti@1.21.6) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -5446,35 +5468,35 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.5.0': + '@typescript-eslint/scope-manager@8.10.0': dependencies: - '@typescript-eslint/types': 8.5.0 - '@typescript-eslint/visitor-keys': 8.5.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 '@typescript-eslint/scope-manager@8.8.1': dependencies: '@typescript-eslint/types': 8.8.1 '@typescript-eslint/visitor-keys': 8.8.1 - '@typescript-eslint/type-utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.5.4) - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.5.0': {} + '@typescript-eslint/types@8.10.0': {} '@typescript-eslint/types@8.8.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -5483,59 +5505,59 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.5.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.5.0 - '@typescript-eslint/visitor-keys': 8.5.0 - debug: 4.3.6 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/visitor-keys': 8.10.0 + debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.8.1(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.8.1 '@typescript-eslint/visitor-keys': 8.8.1 - debug: 4.3.6 + debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.5.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.5.0 - '@typescript-eslint/types': 8.5.0 - '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.10.0 + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.8.1 '@typescript-eslint/types': 8.8.1 - '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) transitivePeerDependencies: - supports-color @@ -5546,9 +5568,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.5.0': + '@typescript-eslint/visitor-keys@8.10.0': dependencies: - '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/types': 8.10.0 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@8.8.1': @@ -5556,17 +5578,40 @@ snapshots: '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5))(vue@3.5.12(typescript@5.5.4))': + '@unhead/dom@1.11.10': + dependencies: + '@unhead/schema': 1.11.10 + '@unhead/shared': 1.11.10 + + '@unhead/schema@1.11.10': + dependencies: + hookable: 5.5.3 + zhead: 2.2.4 + + '@unhead/shared@1.11.10': + dependencies: + '@unhead/schema': 1.11.10 + + '@unhead/vue@1.11.10(vue@3.5.12(typescript@5.6.3))': dependencies: - vite: 5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5) - vue: 3.5.12(typescript@5.5.4) + '@unhead/schema': 1.11.10 + '@unhead/shared': 1.11.10 + defu: 6.1.4 + hookable: 5.5.3 + unhead: 1.11.10 + vue: 3.5.12(typescript@5.6.3) + + '@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5))(vue@3.5.12(typescript@5.6.3))': + dependencies: + vite: 5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5) + vue: 3.5.12(typescript@5.6.3) - '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)': + '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 '@volar/language-core@2.4.1': dependencies: @@ -5630,7 +5675,7 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/language-core@2.1.6(typescript@5.5.4)': + '@vue/language-core@2.1.6(typescript@5.6.3)': dependencies: '@volar/language-core': 2.4.1 '@vue/compiler-dom': 3.5.3 @@ -5641,7 +5686,7 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 '@vue/reactivity@3.5.12': dependencies: @@ -5659,31 +5704,31 @@ snapshots: '@vue/shared': 3.5.12 csstype: 3.1.3 - '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.5.4))': + '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))': dependencies: '@vue/compiler-ssr': 3.5.12 '@vue/shared': 3.5.12 - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) '@vue/shared@3.5.12': {} '@vue/shared@3.5.3': {} - '@vueuse/core@11.1.0(vue@3.5.12(typescript@5.5.4))': + '@vueuse/core@11.1.0(vue@3.5.12(typescript@5.6.3))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 11.1.0 - '@vueuse/shared': 11.1.0(vue@3.5.12(typescript@5.5.4)) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.5.4)) + '@vueuse/shared': 11.1.0(vue@3.5.12(typescript@5.6.3)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@11.1.0': {} - '@vueuse/shared@11.1.0(vue@3.5.12(typescript@5.5.4))': + '@vueuse/shared@11.1.0(vue@3.5.12(typescript@5.6.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.12(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -5774,7 +5819,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.0 + core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color @@ -5925,18 +5970,18 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.38.0: + core-js-compat@3.38.1: dependencies: browserslist: 4.23.3 - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 cross-spawn@7.0.3: dependencies: @@ -5986,7 +6031,7 @@ snapshots: debug@3.2.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 debug@4.3.6: dependencies: @@ -6236,10 +6281,10 @@ snapshots: eslint: 9.12.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.12.0(jiti@1.21.6)) - eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4): + eslint-plugin-import-x@4.3.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3): dependencies: - '@typescript-eslint/utils': 8.5.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) - debug: 4.3.6 + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) + debug: 4.3.7 doctrine: 3.0.0 eslint: 9.12.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 @@ -6253,15 +6298,15 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@50.3.2(eslint@9.12.0(jiti@1.21.6)): + eslint-plugin-jsdoc@50.4.3(eslint@9.12.0(jiti@1.21.6)): dependencies: - '@es-joy/jsdoccomment': 0.48.0 + '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.6 + debug: 4.3.7 escape-string-regexp: 4.0.0 eslint: 9.12.0(jiti@1.21.6) - espree: 10.1.0 + espree: 10.2.0 esquery: 1.6.0 parse-imports: 2.1.1 semver: 7.6.3 @@ -6288,17 +6333,17 @@ snapshots: eslint: 9.12.0(jiti@1.21.6) eslint-plugin-es-x: 7.8.0(eslint@9.12.0(jiti@1.21.6)) get-tsconfig: 4.7.6 - globals: 15.9.0 + globals: 15.11.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.8.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@1.21.6))): + eslint-plugin-perfectionist@3.9.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3)(vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@1.21.6))): dependencies: - '@typescript-eslint/types': 8.8.1 - '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/types': 8.10.0 + '@typescript-eslint/utils': 8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.12.0(jiti@1.21.6) minimatch: 9.0.5 natural-compare-lite: 1.4.0 @@ -6321,7 +6366,7 @@ snapshots: eslint-plugin-toml@0.11.1(eslint@9.12.0(jiti@1.21.6)): dependencies: - debug: 4.3.6 + debug: 4.3.7 eslint: 9.12.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.12.0(jiti@1.21.6)) lodash: 4.17.21 @@ -6329,16 +6374,16 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@9.12.0(jiti@1.21.6)): + eslint-plugin-unicorn@56.0.0(eslint@9.12.0(jiti@1.21.6)): dependencies: '@babel/helper-validator-identifier': 7.24.7 '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.38.0 + core-js-compat: 3.38.1 eslint: 9.12.0(jiti@1.21.6) esquery: 1.6.0 - globals: 15.9.0 + globals: 15.11.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 @@ -6349,13 +6394,13 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6)): dependencies: eslint: 9.12.0(jiti@1.21.6) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.12.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.3) - eslint-plugin-vue@9.28.0(eslint@9.12.0(jiti@1.21.6)): + eslint-plugin-vue@9.29.0(eslint@9.12.0(jiti@1.21.6)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) eslint: 9.12.0(jiti@1.21.6) @@ -6371,7 +6416,7 @@ snapshots: eslint-plugin-yml@1.14.0(eslint@9.12.0(jiti@1.21.6)): dependencies: - debug: 4.3.6 + debug: 4.3.7 eslint: 9.12.0(jiti@1.21.6) eslint-compat-utils: 0.5.1(eslint@9.12.0(jiti@1.21.6)) lodash: 4.17.21 @@ -6397,8 +6442,6 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.0.0: {} - eslint-visitor-keys@4.1.0: {} eslint@9.12.0(jiti@1.21.6): @@ -6443,12 +6486,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.1.0: - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - espree@10.2.0: dependencies: acorn: 8.12.1 @@ -6666,7 +6703,7 @@ snapshots: globals@14.0.0: {} - globals@15.9.0: {} + globals@15.11.0: {} globalthis@1.0.4: dependencies: @@ -7268,7 +7305,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.3.7 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -7468,6 +7505,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -7530,12 +7569,6 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.0 - postcss@8.4.45: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.0 - postcss@8.4.47: dependencies: nanoid: 3.3.7 @@ -7690,12 +7723,12 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - sass@1.79.5: + sass@1.80.2: dependencies: '@parcel/watcher': 2.4.1 chokidar: 4.0.1 immutable: 4.3.7 - source-map-js: 1.2.0 + source-map-js: 1.2.1 scslre@0.3.0: dependencies: @@ -7868,53 +7901,53 @@ snapshots: style-search@0.1.0: {} - stylelint-config-recess-order@5.1.1(stylelint@16.10.0(typescript@5.5.4)): + stylelint-config-recess-order@5.1.1(stylelint@16.10.0(typescript@5.6.3)): dependencies: - stylelint: 16.10.0(typescript@5.5.4) - stylelint-order: 6.0.4(stylelint@16.10.0(typescript@5.5.4)) + stylelint: 16.10.0(typescript@5.6.3) + stylelint-order: 6.0.4(stylelint@16.10.0(typescript@5.6.3)) - stylelint-config-recommended-scss@14.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.5.4)): + stylelint-config-recommended-scss@14.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.6.3)): dependencies: postcss-scss: 4.0.9(postcss@8.4.41) - stylelint: 16.10.0(typescript@5.5.4) - stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.5.4)) - stylelint-scss: 6.5.0(stylelint@16.10.0(typescript@5.5.4)) + stylelint: 16.10.0(typescript@5.6.3) + stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.6.3)) + stylelint-scss: 6.5.0(stylelint@16.10.0(typescript@5.6.3)) optionalDependencies: postcss: 8.4.41 - stylelint-config-recommended@14.0.1(stylelint@16.10.0(typescript@5.5.4)): + stylelint-config-recommended@14.0.1(stylelint@16.10.0(typescript@5.6.3)): dependencies: - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) - stylelint-config-standard-scss@13.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.5.4)): + stylelint-config-standard-scss@13.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.6.3)): dependencies: - stylelint: 16.10.0(typescript@5.5.4) - stylelint-config-recommended-scss: 14.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.5.4)) - stylelint-config-standard: 36.0.1(stylelint@16.10.0(typescript@5.5.4)) + stylelint: 16.10.0(typescript@5.6.3) + stylelint-config-recommended-scss: 14.1.0(postcss@8.4.41)(stylelint@16.10.0(typescript@5.6.3)) + stylelint-config-standard: 36.0.1(stylelint@16.10.0(typescript@5.6.3)) optionalDependencies: postcss: 8.4.41 - stylelint-config-standard@36.0.1(stylelint@16.10.0(typescript@5.5.4)): + stylelint-config-standard@36.0.1(stylelint@16.10.0(typescript@5.6.3)): dependencies: - stylelint: 16.10.0(typescript@5.5.4) - stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.5.4)) + stylelint: 16.10.0(typescript@5.6.3) + stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.6.3)) - stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.10.0(typescript@5.5.4)): + stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.10.0(typescript@5.6.3)): dependencies: - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) - stylelint-order@6.0.4(stylelint@16.10.0(typescript@5.5.4)): + stylelint-order@6.0.4(stylelint@16.10.0(typescript@5.6.3)): dependencies: postcss: 8.4.41 postcss-sorting: 8.0.2(postcss@8.4.41) - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) - stylelint-rem-over-px@1.0.1(stylelint@16.10.0(typescript@5.5.4)): + stylelint-rem-over-px@1.0.1(stylelint@16.10.0(typescript@5.6.3)): dependencies: postcss-value-parser: 4.2.0 - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) - stylelint-scss@6.5.0(stylelint@16.10.0(typescript@5.5.4)): + stylelint-scss@6.5.0(stylelint@16.10.0(typescript@5.6.3)): dependencies: css-tree: 2.3.1 is-plain-object: 5.0.0 @@ -7923,9 +7956,9 @@ snapshots: postcss-resolve-nested-selector: 0.1.5 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - stylelint: 16.10.0(typescript@5.5.4) + stylelint: 16.10.0(typescript@5.6.3) - stylelint@16.10.0(typescript@5.5.4): + stylelint@16.10.0(typescript@5.6.3): dependencies: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) '@csstools/css-tokenizer': 3.0.1 @@ -7934,7 +7967,7 @@ snapshots: '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.6.3) css-functions-list: 3.2.3 css-tree: 3.0.0 debug: 4.3.7 @@ -8055,9 +8088,9 @@ snapshots: dependencies: punycode: 2.3.1 - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - typescript: 5.5.4 + typescript: 5.6.3 tslib@2.6.3: {} @@ -8105,7 +8138,7 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript@5.5.4: {} + typescript@5.6.3: {} ufo@1.5.4: {} @@ -8127,6 +8160,13 @@ snapshots: undici-types@6.19.8: {} + unhead@1.11.10: + dependencies: + '@unhead/dom': 1.11.10 + '@unhead/schema': 1.11.10 + '@unhead/shared': 1.11.10 + hookable: 5.5.3 + unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-match-property-ecmascript@2.0.0: @@ -8224,10 +8264,10 @@ snapshots: util-deprecate@1.0.2: {} - v-wave@3.0.2(rollup@2.79.2)(vue@3.5.12(typescript@5.5.4))(webpack-sources@3.2.3): + v-wave@3.0.2(rollup@2.79.2)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3): dependencies: '@nuxt/kit': 3.13.1(rollup@2.79.2)(webpack-sources@3.2.3) - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) transitivePeerDependencies: - magicast - rollup @@ -8239,37 +8279,37 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-pwa@0.20.5(vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5))(workbox-build@7.1.1)(workbox-window@7.1.0): + vite-plugin-pwa@0.20.5(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5))(workbox-build@7.1.1)(workbox-window@7.1.0): dependencies: debug: 4.3.6 pretty-bytes: 6.1.1 tinyglobby: 0.2.2 - vite: 5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5) + vite: 5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5) workbox-build: 7.1.1 workbox-window: 7.1.0 transitivePeerDependencies: - supports-color - vite@5.4.8(@types/node@22.7.5)(sass@1.79.5)(terser@5.31.5): + vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)(terser@5.31.5): dependencies: esbuild: 0.21.5 - postcss: 8.4.45 + postcss: 8.4.47 rollup: 4.20.0 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 22.7.6 fsevents: 2.3.3 - sass: 1.79.5 + sass: 1.80.2 terser: 5.31.5 vscode-uri@3.0.8: {} - vue-demi@0.14.10(vue@3.5.12(typescript@5.5.4)): + vue-demi@0.14.10(vue@3.5.12(typescript@5.6.3)): dependencies: - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) vue-eslint-parser@9.4.3(eslint@9.12.0(jiti@1.21.6)): dependencies: - debug: 4.3.6 + debug: 4.3.7 eslint: 9.12.0(jiti@1.21.6) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -8280,34 +8320,34 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@10.0.4(vue@3.5.12(typescript@5.5.4)): + vue-i18n@10.0.4(vue@3.5.12(typescript@5.6.3)): dependencies: '@intlify/core-base': 10.0.4 '@intlify/shared': 10.0.4 '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) - vue-router@4.4.5(vue@3.5.12(typescript@5.5.4)): + vue-router@4.4.5(vue@3.5.12(typescript@5.6.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.5.4) + vue: 3.5.12(typescript@5.6.3) - vue-tsc@2.1.6(typescript@5.5.4): + vue-tsc@2.1.6(typescript@5.6.3): dependencies: '@volar/typescript': 2.4.1 - '@vue/language-core': 2.1.6(typescript@5.5.4) + '@vue/language-core': 2.1.6(typescript@5.6.3) semver: 7.6.3 - typescript: 5.5.4 + typescript: 5.6.3 - vue@3.5.12(typescript@5.5.4): + vue@3.5.12(typescript@5.6.3): dependencies: '@vue/compiler-dom': 3.5.12 '@vue/compiler-sfc': 3.5.12 '@vue/runtime-dom': 3.5.12 - '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.5.4)) + '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3)) '@vue/shared': 3.5.12 optionalDependencies: - typescript: 5.5.4 + typescript: 5.6.3 webidl-conversions@3.0.1: {} @@ -8514,4 +8554,6 @@ snapshots: yocto-queue@0.1.0: {} + zhead@2.2.4: {} + zwitch@2.0.4: {} diff --git a/src/constants/messages.ts b/src/constants/messages.ts index eceb29d..a1c3048 100644 --- a/src/constants/messages.ts +++ b/src/constants/messages.ts @@ -16,6 +16,8 @@ const messages: I18nOptions["messages"] = { onboarding: "Onboarding", search: "Search", calendar: "Calendar", + birthsigns: "Birthsigns", + birthsign: "Birthsign", holiday: "Holiday", summoningDay: "Summoning Day", settings: "Settings" @@ -57,6 +59,8 @@ const messages: I18nOptions["messages"] = { onboarding: "Приветствие", search: "Поиск", calendar: "Календарь", + birthsigns: "Знаки рождения", + birthsign: "Знак рождения", holiday: "Праздник", summoningDay: "День вызова даэдра", settings: "Настройки" diff --git a/src/helpers/router.ts b/src/helpers/router.ts new file mode 100644 index 0000000..f8ac293 --- /dev/null +++ b/src/helpers/router.ts @@ -0,0 +1,14 @@ +import { i18n } from "@/main"; + +interface ComposeTitleOptions { + /** Pass raw text instead of translation token */ + raw?: boolean +} +export function composeTitle(prependText: string | undefined, options: ComposeTitleOptions = {}) { + let title = i18n.global.t("router.title"); + if (prependText) { + if (!options.raw) prependText = i18n.global.t(prependText); + title = `${prependText} | ${title}`; + } + return title; +} diff --git a/src/main.ts b/src/main.ts index b8ce8f3..51b190a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,6 @@ import { createApp } from "vue"; import { createI18n } from "vue-i18n"; +import { createHead } from "@unhead/vue"; import VWave from "v-wave"; import messages from "@/constants/messages"; import { useSettingsStore } from "@/store/settings"; @@ -14,11 +15,14 @@ export const i18n = createI18n({ messages }); +const head = createHead(); + const { settings, setLocale } = useSettingsStore(); setLocale(settings.value.locale); createApp(App) .use(i18n) .use(router) + .use(head) .use(VWave, {}) .mount("#app"); diff --git a/src/router.ts b/src/router.ts index 8944e1f..d498237 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,5 +1,5 @@ import { createRouter, createWebHistory } from "vue-router"; -import { i18n } from "./main"; +import { composeTitle } from "./helpers/router"; import { useSettingsStore } from "./store/settings"; const OnboardingView = () => import("@/views/OnboardingView.vue"); @@ -115,9 +115,7 @@ router.beforeEach(() => { }); router.afterEach((to) => { const token = to.matched[0].meta.titleToken; - document.title = token ? - `${i18n.global.t(token)} | ${i18n.global.t("router.title")}` : - i18n.global.t("router.title"); + document.title = composeTitle(token); }); export default router; diff --git a/src/views/BirthsignView.vue b/src/views/BirthsignView.vue index b49f99b..1ca04c8 100644 --- a/src/views/BirthsignView.vue +++ b/src/views/BirthsignView.vue @@ -31,7 +31,9 @@ import { computed } from "vue"; import { useShare } from "@vueuse/core"; import { useRoute } from "vue-router"; import { IconShare3 } from "@tabler/icons-vue"; +import { useHead } from "@unhead/vue"; import { composeMonthNameFromDataEntry, isValidMonthIndex } from "@/helpers/date"; +import { composeTitle } from "@/helpers/router"; import { useEventsStore } from "@/store/events"; import CommonHeader from "@/components/CommonHeader.vue"; @@ -39,6 +41,17 @@ const route = useRoute(); const { birthsigns } = useEventsStore(); const birthsign = computed(() => birthsigns.get(route.params.month?.toString())); +const title = computed(() => { + if (!birthsign.value) return composeTitle(route.meta.titleToken); + return composeTitle(birthsign.value.name, { raw: true }); +}); +useHead({ + title, + meta: () => [ + { name: "description", content: birthsign.value?.description } + ] +}); + const { share, isSupported: isShareSupported } = useShare(); function shareBirthsign(): void { if (!birthsign.value) return; diff --git a/src/views/HolidayView.vue b/src/views/HolidayView.vue index 674a807..c34a919 100644 --- a/src/views/HolidayView.vue +++ b/src/views/HolidayView.vue @@ -31,6 +31,8 @@ import { computed } from "vue"; import { useShare } from "@vueuse/core"; import { useRoute } from "vue-router"; import { IconShare3 } from "@tabler/icons-vue"; +import { useHead } from "@unhead/vue"; +import { composeTitle } from "@/helpers/router"; import { useEventsStore } from "@/store/events"; import CommonHeader from "@/components/CommonHeader.vue"; @@ -39,6 +41,17 @@ const date = route.query.date?.toString(); const { holidays } = useEventsStore(); const event = computed(() => (date ? holidays.get(date) : null)); +const title = computed(() => { + if (!event.value) return composeTitle(route.meta.titleToken); + return composeTitle(event.value.name, { raw: true }); +}); +useHead({ + title, + meta: () => [ + { name: "description", content: event.value?.description } + ] +}); + const { share, isSupported: isShareSupported } = useShare(); function shareEvent(): void { if (!event.value) return; diff --git a/src/views/SummoningDayView.vue b/src/views/SummoningDayView.vue index ffa84de..9d202ce 100644 --- a/src/views/SummoningDayView.vue +++ b/src/views/SummoningDayView.vue @@ -32,6 +32,8 @@ import { computed } from "vue"; import { useShare } from "@vueuse/core"; import { useRoute } from "vue-router"; import { IconShare3 } from "@tabler/icons-vue"; +import { useHead } from "@unhead/vue"; +import { composeTitle } from "@/helpers/router"; import { useEventsStore } from "@/store/events"; import CommonHeader from "@/components/CommonHeader.vue"; @@ -40,6 +42,17 @@ const date = route.query.date?.toString(); const { summoningDays } = useEventsStore(); const event = computed(() => (date ? summoningDays.get(date) : null)); +const title = computed(() => { + if (!event.value) return composeTitle(route.meta.titleToken); + return composeTitle(event.value.name, { raw: true }); +}); +useHead({ + title, + meta: () => [ + { name: "description", content: event.value?.description } + ] +}); + const { share, isSupported: isShareSupported } = useShare(); function shareEvent(): void { if (!event.value) return;