nuxt-i18n-micro 1.56.1 → 1.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/200.html +9 -9
- package/dist/client/404.html +9 -9
- package/dist/client/_nuxt/{D7qRjn1h.js → CZ_jpsc8.js} +1 -1
- package/dist/client/_nuxt/D5DDkZf7.js +3822 -0
- package/dist/client/_nuxt/{B85fdbn4.js → Dt6qcL53.js} +1 -1
- package/dist/client/_nuxt/{BzXxbhIZ.js → Q1M8TAfw.js} +1 -1
- package/dist/client/_nuxt/builds/latest.json +1 -1
- package/dist/client/_nuxt/builds/meta/8f7b46a2-7952-4c79-b5d5-125bc7063104.json +1 -0
- package/dist/client/_nuxt/error-404.Bi56koGt.css +1 -0
- package/dist/client/_nuxt/error-500.CRtfRwKH.css +1 -0
- package/dist/client/index.html +9 -9
- package/dist/module.json +1 -1
- package/dist/runtime/components/i18n-link.vue +1 -1
- package/dist/runtime/plugins/01.plugin.d.ts +3 -3
- package/dist/runtime/plugins/01.plugin.js +92 -102
- package/dist/runtime/plugins/02.meta.d.ts +1 -1
- package/dist/runtime/plugins/02.meta.js +1 -2
- package/dist/runtime/plugins/03.define.d.ts +2 -2
- package/dist/runtime/plugins/04.auto-detect.d.ts +1 -1
- package/dist/runtime/translation-server-middleware.js +5 -4
- package/dist/utils.mjs +1 -1
- package/package.json +9 -9
- package/dist/client/_nuxt/BhDLGWZB.js +0 -3822
- package/dist/client/_nuxt/builds/meta/133771c3-8571-4ce6-941a-4aebd70294a2.json +0 -1
- package/dist/client/_nuxt/error-404.BRvVeJss.css +0 -1
- package/dist/client/_nuxt/error-500.DWqKq_Wn.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as s,o as a,c as i,a as e,t as o}from"./
|
|
1
|
+
import{_ as s,o as a,c as i,a as e,t as o}from"./D5DDkZf7.js";import{u}from"./Q1M8TAfw.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return u({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(a(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-decdb02a"]]);export{b as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as f,r as u,f as o,g as d,h as v,j as l,k as i,l as h,m}from"./
|
|
1
|
+
import{i as f,r as u,f as o,g as d,h as v,j as l,k as i,l as h,m}from"./D5DDkZf7.js";function U(t,a={}){const e=a.head||f();if(e)return e.ssr?e.push(t,a):p(e,t,a)}function p(t,a,e={}){const s=u(!1),n=u({});o(()=>{n.value=s.value?{}:d(a)});const r=t.push(n.value,e);return v(n,c=>{r.patch(c)}),m()&&(l(()=>{r.dispose()}),i(()=>{s.value=!0}),h(()=>{s.value=!1})),r}export{U as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"8f7b46a2-7952-4c79-b5d5-125bc7063104","timestamp":1736368198126}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"8f7b46a2-7952-4c79-b5d5-125bc7063104","timestamp":1736368198126,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.spotlight[data-v-aa77771a]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-aa77771a]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-aa77771a]{background-color:#ffffff4d}.gradient-border[data-v-aa77771a]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-aa77771a]{background-color:#1414144d}.gradient-border[data-v-aa77771a]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-aa77771a]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-aa77771a]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-aa77771a]{position:fixed}.left-0[data-v-aa77771a]{left:0}.right-0[data-v-aa77771a]{right:0}.z-10[data-v-aa77771a]{z-index:10}.z-20[data-v-aa77771a]{z-index:20}.grid[data-v-aa77771a]{display:grid}.mb-16[data-v-aa77771a]{margin-bottom:4rem}.mb-8[data-v-aa77771a]{margin-bottom:2rem}.max-w-520px[data-v-aa77771a]{max-width:520px}.min-h-screen[data-v-aa77771a]{min-height:100vh}.w-full[data-v-aa77771a]{width:100%}.flex[data-v-aa77771a]{display:flex}.cursor-pointer[data-v-aa77771a]{cursor:pointer}.place-content-center[data-v-aa77771a]{place-content:center}.items-center[data-v-aa77771a]{align-items:center}.justify-center[data-v-aa77771a]{justify-content:center}.overflow-hidden[data-v-aa77771a]{overflow:hidden}.bg-white[data-v-aa77771a]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-aa77771a]{padding-left:1rem;padding-right:1rem}.px-8[data-v-aa77771a]{padding-left:2rem;padding-right:2rem}.py-2[data-v-aa77771a]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-aa77771a]{text-align:center}.text-8xl[data-v-aa77771a]{font-size:6rem;line-height:1}.text-xl[data-v-aa77771a]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-aa77771a]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-aa77771a]{font-weight:300}.font-medium[data-v-aa77771a]{font-weight:500}.leading-tight[data-v-aa77771a]{line-height:1.25}.font-sans[data-v-aa77771a]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-aa77771a]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-aa77771a]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-aa77771a]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-aa77771a]{padding-left:0;padding-right:0}.sm\:px-6[data-v-aa77771a]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-aa77771a]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-aa77771a]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-aa77771a]{font-size:1.25rem;line-height:1.75rem}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.spotlight[data-v-decdb02a]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-decdb02a]{position:fixed}.-bottom-1\/2[data-v-decdb02a]{bottom:-50%}.left-0[data-v-decdb02a]{left:0}.right-0[data-v-decdb02a]{right:0}.grid[data-v-decdb02a]{display:grid}.mb-16[data-v-decdb02a]{margin-bottom:4rem}.mb-8[data-v-decdb02a]{margin-bottom:2rem}.h-1\/2[data-v-decdb02a]{height:50%}.max-w-520px[data-v-decdb02a]{max-width:520px}.min-h-screen[data-v-decdb02a]{min-height:100vh}.place-content-center[data-v-decdb02a]{place-content:center}.overflow-hidden[data-v-decdb02a]{overflow:hidden}.bg-white[data-v-decdb02a]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-decdb02a]{padding-left:2rem;padding-right:2rem}.text-center[data-v-decdb02a]{text-align:center}.text-8xl[data-v-decdb02a]{font-size:6rem;line-height:1}.text-xl[data-v-decdb02a]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-decdb02a]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-decdb02a]{font-weight:300}.font-medium[data-v-decdb02a]{font-weight:500}.leading-tight[data-v-decdb02a]{line-height:1.25}.font-sans[data-v-decdb02a]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-decdb02a]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-decdb02a]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-decdb02a]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-decdb02a]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-decdb02a]{font-size:2.25rem;line-height:2.5rem}}
|
package/dist/client/index.html
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<!DOCTYPE html><html data-capo=""><head><meta charset="utf-8">
|
|
2
2
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
3
|
-
<link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.B5pGkSSX.css">
|
|
4
|
-
<link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/
|
|
3
|
+
<link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.B5pGkSSX.css" crossorigin>
|
|
4
|
+
<link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/D5DDkZf7.js">
|
|
5
5
|
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/B6E6ObS_.js">
|
|
6
|
-
<link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.
|
|
7
|
-
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/
|
|
8
|
-
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/
|
|
9
|
-
<link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.
|
|
10
|
-
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/
|
|
11
|
-
<script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/
|
|
12
|
-
<script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"
|
|
6
|
+
<link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.Bi56koGt.css">
|
|
7
|
+
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/CZ_jpsc8.js">
|
|
8
|
+
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/Q1M8TAfw.js">
|
|
9
|
+
<link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.CRtfRwKH.css">
|
|
10
|
+
<link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/Dt6qcL53.js">
|
|
11
|
+
<script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/D5DDkZf7.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1736368202838,false]</script>
|
|
12
|
+
<script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"8f7b46a2-7952-4c79-b5d5-125bc7063104",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
|
package/dist/module.json
CHANGED
|
@@ -36,7 +36,7 @@ const route = useRoute()
|
|
|
36
36
|
|
|
37
37
|
const isExternalLink = computed(() => {
|
|
38
38
|
if (typeof props.to === 'string') {
|
|
39
|
-
return /^(?:https?:\/\/|\/\/|[a-zA-Z0-9-]+\.[a-zA-Z]{2,})
|
|
39
|
+
return /^(?:https?:\/\/|\/\/|[a-zA-Z0-9-]+\.[a-zA-Z]{2,})|tel:|mailto:/.test(props.to)
|
|
40
40
|
}
|
|
41
41
|
return false
|
|
42
42
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RouteLocationAsPath, RouteLocationAsRelative, RouteLocationAsString, RouteLocationNormalizedLoaded, RouteLocationRaw, RouteLocationResolved, RouteLocationResolvedGeneric } from 'vue-router';
|
|
2
2
|
import type { Translation, Translations } from 'nuxt-i18n-micro-core';
|
|
3
|
-
import type {
|
|
4
|
-
declare const _default: import("
|
|
3
|
+
import type { I18nRouteParams, Locale, Params } from '../../types.js';
|
|
4
|
+
declare const _default: import("nuxt/app").Plugin<{
|
|
5
5
|
i18n: undefined;
|
|
6
6
|
__micro: boolean;
|
|
7
7
|
getLocale: () => string;
|
|
@@ -23,7 +23,7 @@ declare const _default: import("#app").Plugin<{
|
|
|
23
23
|
localeRoute: (to: RouteLocationAsString | RouteLocationAsRelative | RouteLocationAsPath, locale?: string) => RouteLocationResolved;
|
|
24
24
|
localePath: (to: RouteLocationAsString | RouteLocationAsRelative | RouteLocationAsPath, locale?: string) => string;
|
|
25
25
|
setI18nRouteParams: (value: I18nRouteParams) => I18nRouteParams;
|
|
26
|
-
}> & import("
|
|
26
|
+
}> & import("nuxt/app").ObjectPlugin<{
|
|
27
27
|
i18n: undefined;
|
|
28
28
|
__micro: boolean;
|
|
29
29
|
getLocale: () => string;
|
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { interpolate, useTranslationHelper } from "nuxt-i18n-micro-core";
|
|
2
2
|
import { isNoPrefixStrategy, withPrefixStrategy } from "../helpers.js";
|
|
3
3
|
import { defineNuxtPlugin, useRuntimeConfig } from "#app";
|
|
4
|
-
import {
|
|
4
|
+
import { navigateTo, useCookie, useRouter, useState } from "#imports";
|
|
5
5
|
import { plural } from "#build/i18n.plural.mjs";
|
|
6
6
|
const i18nHelper = useTranslationHelper();
|
|
7
7
|
const isDev = process.env.NODE_ENV !== "production";
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
return hashLocale;
|
|
11
|
-
}
|
|
12
|
-
if (isNoPrefixStrategy(i18nConfig.strategy) && noPrefixStrategy) {
|
|
13
|
-
return noPrefixStrategy;
|
|
14
|
-
}
|
|
15
|
-
return (route.params?.locale ?? i18nConfig.defaultLocale).toString();
|
|
16
|
-
}
|
|
17
|
-
function getCurrentName(route, i18nConfig, hashLocale, noPrefixStrategy) {
|
|
18
|
-
const currentLocaleCode = getCurrentLocale(route, i18nConfig, hashLocale, noPrefixStrategy);
|
|
8
|
+
function getCurrentName(i18nConfig) {
|
|
9
|
+
const currentLocaleCode = i18nHelper.getLocale();
|
|
19
10
|
const checkLocale = i18nConfig.locales?.find((l) => l.code === currentLocaleCode);
|
|
20
11
|
if (!checkLocale) {
|
|
21
12
|
return null;
|
|
@@ -23,7 +14,8 @@ function getCurrentName(route, i18nConfig, hashLocale, noPrefixStrategy) {
|
|
|
23
14
|
return checkLocale?.displayName ?? null;
|
|
24
15
|
}
|
|
25
16
|
function getRouteName(route, locale) {
|
|
26
|
-
|
|
17
|
+
const name = (route.name ?? "").toString();
|
|
18
|
+
return name.toString().replace("localized-", "").replace(new RegExp(`-${locale}$`), "");
|
|
27
19
|
}
|
|
28
20
|
function switchLocaleRoute(fromLocale, toLocale, route, router, i18nConfig, i18nRouteParams) {
|
|
29
21
|
const currentLocale = i18nConfig.locales?.find((l) => l.code === toLocale);
|
|
@@ -92,6 +84,7 @@ function switchLocale(fromLocale, toLocale, route, router, i18nConfig, i18nRoute
|
|
|
92
84
|
const userLocaleCookie = useCookie("no-prefix-locale");
|
|
93
85
|
userLocaleCookie.value = toLocale;
|
|
94
86
|
}
|
|
87
|
+
i18nHelper.setLocale(toLocale);
|
|
95
88
|
const switchedRoute = switchLocaleRoute(
|
|
96
89
|
fromLocale,
|
|
97
90
|
toLocale,
|
|
@@ -108,7 +101,7 @@ function switchLocale(fromLocale, toLocale, route, router, i18nConfig, i18nRoute
|
|
|
108
101
|
}
|
|
109
102
|
return router.push(switchedRoute);
|
|
110
103
|
}
|
|
111
|
-
function getLocalizedRoute(to, router,
|
|
104
|
+
function getLocalizedRoute(to, router, i18nConfig, locale) {
|
|
112
105
|
const resolveParams = (to2) => {
|
|
113
106
|
const params = typeof to2 === "object" && "params" in to2 && typeof to2.params === "object" ? { ...to2.params } : {};
|
|
114
107
|
if (typeof to2 === "string") {
|
|
@@ -142,7 +135,7 @@ function getLocalizedRoute(to, router, route, i18nConfig, locale, hashLocale, no
|
|
|
142
135
|
});
|
|
143
136
|
}
|
|
144
137
|
}
|
|
145
|
-
const currentLocale = locale ||
|
|
138
|
+
const currentLocale = locale || i18nHelper.getLocale();
|
|
146
139
|
const selectRoute = router.resolve(to);
|
|
147
140
|
const routeName = getRouteName(selectRoute, currentLocale).replace(new RegExp(`-${i18nConfig.defaultLocale}$`), "");
|
|
148
141
|
if (!routeName || routeName === "") {
|
|
@@ -207,10 +200,21 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
207
200
|
const i18nConfig = config.public.i18nConfig;
|
|
208
201
|
const apiBaseUrl = i18nConfig.apiBaseUrl ?? "_locales";
|
|
209
202
|
const runtimeConfig = useRuntimeConfig();
|
|
210
|
-
const
|
|
211
|
-
const
|
|
203
|
+
const router = useRouter();
|
|
204
|
+
const route = router.currentRoute.value;
|
|
205
|
+
const currentHashLocale = i18nConfig.hashMode ? (useCookie("hash-locale").value ?? i18nConfig.defaultLocale).toString() : null;
|
|
206
|
+
const currentNoPrefixDefault = isNoPrefixStrategy(i18nConfig.strategy) ? useCookie("no-prefix-locale").value ?? i18nConfig.defaultLocale : null;
|
|
207
|
+
const currentLocale = (route.params?.locale ?? i18nConfig.defaultLocale).toString();
|
|
208
|
+
i18nHelper.setLocale(currentLocale);
|
|
209
|
+
if (currentNoPrefixDefault) {
|
|
210
|
+
i18nHelper.setLocale(currentNoPrefixDefault);
|
|
211
|
+
}
|
|
212
|
+
if (currentHashLocale) {
|
|
213
|
+
i18nHelper.setLocale(currentHashLocale);
|
|
214
|
+
}
|
|
215
|
+
const loadTranslationsIfNeeded = async (routeName, path) => {
|
|
212
216
|
try {
|
|
213
|
-
if (!i18nHelper.hasPageTranslation(
|
|
217
|
+
if (!i18nHelper.hasPageTranslation(routeName)) {
|
|
214
218
|
let fRouteName = routeName;
|
|
215
219
|
if (i18nConfig.routesLocaleLinks && i18nConfig.routesLocaleLinks[fRouteName]) {
|
|
216
220
|
fRouteName = i18nConfig.routesLocaleLinks[fRouteName];
|
|
@@ -219,34 +223,51 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
219
223
|
console.warn(`[nuxt-i18n-next] The page name is missing in the path: ${path}. Please ensure that definePageMeta({ name: 'pageName' }) is set.`);
|
|
220
224
|
return;
|
|
221
225
|
}
|
|
222
|
-
const
|
|
223
|
-
const
|
|
224
|
-
await
|
|
226
|
+
const locale = i18nHelper.getLocale();
|
|
227
|
+
const url = `/${apiBaseUrl}/${fRouteName}/${locale}/data.json?v=${i18nConfig.dateBuild}`.replace(/\/{2,}/g, "/");
|
|
228
|
+
const data = await $fetch(url, { baseURL: runtimeConfig.app.baseURL });
|
|
229
|
+
await i18nHelper.loadPageTranslations(routeName, data ?? {});
|
|
225
230
|
}
|
|
226
231
|
} catch (_error) {
|
|
227
232
|
}
|
|
228
233
|
};
|
|
229
234
|
async function loadGlobalTranslations(to) {
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
if (
|
|
233
|
-
|
|
235
|
+
const localeRoute = (to.params?.locale ?? i18nConfig.defaultLocale).toString();
|
|
236
|
+
i18nHelper.setLocale(localeRoute);
|
|
237
|
+
if (isNoPrefixStrategy(i18nConfig.strategy)) {
|
|
238
|
+
await nuxtApp.runWithContext(() => {
|
|
239
|
+
const locale = (useCookie("no-prefix-locale").value ?? i18nConfig.defaultLocale).toString();
|
|
240
|
+
i18nHelper.setLocale(locale);
|
|
241
|
+
return true;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
if (i18nConfig.hashMode) {
|
|
245
|
+
await nuxtApp.runWithContext(() => {
|
|
246
|
+
const locale = (useCookie("hash-locale").value ?? i18nConfig.defaultLocale).toString();
|
|
247
|
+
i18nHelper.setLocale(locale);
|
|
248
|
+
return true;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (!i18nHelper.hasGeneralTranslation()) {
|
|
252
|
+
const locale = i18nHelper.getLocale();
|
|
253
|
+
const url = `/${apiBaseUrl}/general/${locale}/data.json?v=${i18nConfig.dateBuild}`.replace(/\/{2,}/g, "/");
|
|
254
|
+
const data = await $fetch(url, {
|
|
234
255
|
baseURL: runtimeConfig.app.baseURL
|
|
235
256
|
});
|
|
236
|
-
await i18nHelper.loadTranslations(
|
|
257
|
+
await i18nHelper.loadTranslations(data ?? {});
|
|
237
258
|
}
|
|
238
259
|
if (!i18nConfig.disablePageLocales) {
|
|
239
|
-
const routeName = getRouteName(to,
|
|
240
|
-
await loadTranslationsIfNeeded(
|
|
260
|
+
const routeName = getRouteName(to, i18nHelper.getLocale());
|
|
261
|
+
await loadTranslationsIfNeeded(routeName, to.fullPath);
|
|
241
262
|
}
|
|
242
263
|
await nuxtApp.callHook("i18n:register", (translations, selectedLocale) => {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
264
|
+
if (selectedLocale !== i18nHelper.getLocale()) return;
|
|
265
|
+
const routeName = getRouteName(to);
|
|
266
|
+
i18nHelper.mergeTranslation(routeName, translations, true);
|
|
267
|
+
}, i18nHelper.getLocale());
|
|
246
268
|
}
|
|
247
|
-
const router = useRouter();
|
|
248
269
|
router.beforeEach(async (to, from, next) => {
|
|
249
|
-
if (to.
|
|
270
|
+
if (to.fullPath !== from.fullPath) {
|
|
250
271
|
await loadGlobalTranslations(to);
|
|
251
272
|
}
|
|
252
273
|
if (next) {
|
|
@@ -256,11 +277,10 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
256
277
|
await loadGlobalTranslations(router.currentRoute.value);
|
|
257
278
|
const getTranslation = (key, params, defaultValue) => {
|
|
258
279
|
if (!key) return "";
|
|
259
|
-
const
|
|
260
|
-
const
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
let value = i18nHelper.getTranslation(locale, routeName, key);
|
|
280
|
+
const locale = i18nHelper.getLocale();
|
|
281
|
+
const route2 = router.currentRoute.value;
|
|
282
|
+
const routeName = getRouteName(route2, locale);
|
|
283
|
+
let value = i18nHelper.getTranslation(routeName, key);
|
|
264
284
|
if (!value) {
|
|
265
285
|
if (isDev && import.meta.client) {
|
|
266
286
|
console.warn(`Not found '${key}' key in '${locale}' locale messages.`);
|
|
@@ -269,10 +289,6 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
269
289
|
}
|
|
270
290
|
return typeof value === "string" && params ? interpolate(value, params) : value;
|
|
271
291
|
};
|
|
272
|
-
let hashLocale = null;
|
|
273
|
-
if (i18nConfig.hashMode) {
|
|
274
|
-
hashLocale = useCookie("hash-locale").value ?? i18nConfig.defaultLocale;
|
|
275
|
-
}
|
|
276
292
|
const i18nRouteParams = useState("i18n-route-params");
|
|
277
293
|
nuxtApp.hook("page:start", () => {
|
|
278
294
|
i18nRouteParams.value = null;
|
|
@@ -280,14 +296,13 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
280
296
|
const provideData = {
|
|
281
297
|
i18n: void 0,
|
|
282
298
|
__micro: true,
|
|
283
|
-
getLocale: () =>
|
|
284
|
-
getLocaleName: () => getCurrentName(
|
|
299
|
+
getLocale: () => i18nHelper.getLocale(),
|
|
300
|
+
getLocaleName: () => getCurrentName(i18nConfig),
|
|
285
301
|
defaultLocale: () => i18nConfig.defaultLocale,
|
|
286
302
|
getLocales: () => i18nConfig.locales || [],
|
|
287
|
-
getRouteName: (
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
return getRouteName(selectedRoute, selectedLocale);
|
|
303
|
+
getRouteName: (route2, locale) => {
|
|
304
|
+
const selectedRoute = route2 ?? router.currentRoute.value;
|
|
305
|
+
return getRouteName(selectedRoute, locale ?? i18nHelper.getLocale());
|
|
291
306
|
},
|
|
292
307
|
t: getTranslation,
|
|
293
308
|
ts: (key, params, defaultValue) => {
|
|
@@ -295,45 +310,34 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
295
310
|
return value?.toString() ?? defaultValue ?? key;
|
|
296
311
|
},
|
|
297
312
|
tc: (key, params, defaultValue) => {
|
|
298
|
-
const
|
|
299
|
-
const currentLocale = getCurrentLocale(route, i18nConfig, hashLocale, noPrefixDefault);
|
|
313
|
+
const currentLocale2 = i18nHelper.getLocale();
|
|
300
314
|
const { count, ..._params } = typeof params === "number" ? { count: params } : params;
|
|
301
|
-
return plural(key, Number.parseInt(count.toString()), _params,
|
|
315
|
+
return plural(key, Number.parseInt(count.toString()), _params, currentLocale2, getTranslation) ?? defaultValue ?? key;
|
|
302
316
|
},
|
|
303
317
|
tn: (value, options) => {
|
|
304
|
-
const
|
|
305
|
-
const locale = getCurrentLocale(route, i18nConfig, hashLocale, noPrefixDefault);
|
|
318
|
+
const locale = i18nHelper.getLocale();
|
|
306
319
|
return formatNumber(value, locale, options);
|
|
307
320
|
},
|
|
308
321
|
td: (value, options) => {
|
|
309
|
-
const
|
|
310
|
-
const locale = getCurrentLocale(route, i18nConfig, hashLocale, noPrefixDefault);
|
|
322
|
+
const locale = i18nHelper.getLocale();
|
|
311
323
|
return formatDate(value, locale, options);
|
|
312
324
|
},
|
|
313
325
|
has: (key) => {
|
|
314
326
|
return !!getTranslation(key);
|
|
315
327
|
},
|
|
316
328
|
mergeTranslations: (newTranslations) => {
|
|
317
|
-
const
|
|
318
|
-
const locale =
|
|
319
|
-
const routeName = getRouteName(
|
|
320
|
-
i18nHelper.mergeTranslation(
|
|
329
|
+
const route2 = router.currentRoute.value;
|
|
330
|
+
const locale = (route2.params?.locale ?? i18nConfig.defaultLocale).toString();
|
|
331
|
+
const routeName = getRouteName(route2, locale);
|
|
332
|
+
i18nHelper.mergeTranslation(routeName, newTranslations);
|
|
321
333
|
},
|
|
322
334
|
switchLocaleRoute: (toLocale) => {
|
|
323
|
-
const
|
|
324
|
-
|
|
325
|
-
if (i18nConfig.hashMode) {
|
|
326
|
-
hashLocale = toLocale;
|
|
327
|
-
}
|
|
328
|
-
return switchLocaleRoute(fromLocale, toLocale, route, router, i18nConfig, i18nRouteParams.value);
|
|
335
|
+
const route2 = router.currentRoute.value;
|
|
336
|
+
return switchLocaleRoute(i18nHelper.getLocale(), toLocale, route2, router, i18nConfig, i18nRouteParams.value);
|
|
329
337
|
},
|
|
330
338
|
switchLocalePath: (toLocale) => {
|
|
331
|
-
const
|
|
332
|
-
const
|
|
333
|
-
if (i18nConfig.hashMode) {
|
|
334
|
-
hashLocale = toLocale;
|
|
335
|
-
}
|
|
336
|
-
const localeRoute = switchLocaleRoute(fromLocale, toLocale, route, router, i18nConfig, i18nRouteParams.value);
|
|
339
|
+
const route2 = router.currentRoute.value;
|
|
340
|
+
const localeRoute = switchLocaleRoute(i18nHelper.getLocale(), toLocale, route2, router, i18nConfig, i18nRouteParams.value);
|
|
337
341
|
if (typeof localeRoute === "string") {
|
|
338
342
|
return localeRoute;
|
|
339
343
|
}
|
|
@@ -343,54 +347,40 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
|
|
343
347
|
return "";
|
|
344
348
|
},
|
|
345
349
|
switchLocale: (toLocale) => {
|
|
346
|
-
const
|
|
347
|
-
|
|
348
|
-
if (i18nConfig.hashMode) {
|
|
349
|
-
hashLocale = toLocale;
|
|
350
|
-
}
|
|
351
|
-
switchLocale(fromLocale, toLocale, route, router, i18nConfig, i18nRouteParams.value);
|
|
350
|
+
const route2 = router.currentRoute.value;
|
|
351
|
+
switchLocale(i18nHelper.getLocale(), toLocale, route2, router, i18nConfig, i18nRouteParams.value);
|
|
352
352
|
},
|
|
353
|
-
switchRoute: (
|
|
353
|
+
switchRoute: (route2, toLocale) => {
|
|
354
354
|
const currentRoute = router.currentRoute.value;
|
|
355
|
-
const fromLocale =
|
|
356
|
-
const
|
|
355
|
+
const fromLocale = (currentRoute.params?.locale ?? i18nConfig.defaultLocale).toString();
|
|
356
|
+
const currentLocale2 = toLocale ?? fromLocale;
|
|
357
357
|
let to = null;
|
|
358
|
-
if (typeof
|
|
359
|
-
if (
|
|
360
|
-
|
|
361
|
-
const fromLocale2 = getCurrentLocale(currentRoute2, i18nConfig, hashLocale, noPrefixDefault);
|
|
362
|
-
to = router.resolve("/" + fromLocale2 + route);
|
|
358
|
+
if (typeof route2 === "string" && !isNoPrefixStrategy(i18nConfig.strategy)) {
|
|
359
|
+
if (currentLocale2 !== i18nConfig.defaultLocale || withPrefixStrategy(i18nConfig.strategy)) {
|
|
360
|
+
to = router.resolve("/" + fromLocale + route2);
|
|
363
361
|
} else {
|
|
364
|
-
to = router.resolve(
|
|
362
|
+
to = router.resolve(route2);
|
|
365
363
|
}
|
|
366
364
|
}
|
|
367
|
-
if (i18nConfig.hashMode) {
|
|
368
|
-
hashLocale = toLocale ?? fromLocale;
|
|
369
|
-
}
|
|
370
365
|
if (!to) {
|
|
371
366
|
return;
|
|
372
367
|
}
|
|
373
|
-
switchLocale(
|
|
368
|
+
switchLocale(i18nHelper.getLocale(), toLocale ?? fromLocale, to, router, i18nConfig, i18nRouteParams.value);
|
|
374
369
|
},
|
|
375
370
|
localeRoute: (to, locale) => {
|
|
376
|
-
const
|
|
377
|
-
const
|
|
378
|
-
const currentLocale = locale ?? fromLocale;
|
|
371
|
+
const fromLocale = i18nHelper.getLocale();
|
|
372
|
+
const currentLocale2 = locale ?? fromLocale;
|
|
379
373
|
if (typeof to === "string" && !isNoPrefixStrategy(i18nConfig.strategy)) {
|
|
380
|
-
if (
|
|
381
|
-
|
|
382
|
-
const fromLocale2 = getCurrentLocale(currentRoute2, i18nConfig, hashLocale, noPrefixDefault);
|
|
383
|
-
to = router.resolve("/" + fromLocale2 + to);
|
|
374
|
+
if (currentLocale2 !== i18nConfig.defaultLocale || withPrefixStrategy(i18nConfig.strategy)) {
|
|
375
|
+
to = router.resolve("/" + fromLocale + to);
|
|
384
376
|
} else {
|
|
385
377
|
to = router.resolve(to);
|
|
386
378
|
}
|
|
387
379
|
}
|
|
388
|
-
|
|
389
|
-
return getLocalizedRoute(to, router, route, i18nConfig, currentLocale, hashLocale);
|
|
380
|
+
return getLocalizedRoute(to, router, i18nConfig, currentLocale2);
|
|
390
381
|
},
|
|
391
382
|
localePath: (to, locale) => {
|
|
392
|
-
const
|
|
393
|
-
const localeRoute = getLocalizedRoute(to, router, route, i18nConfig, locale, hashLocale);
|
|
383
|
+
const localeRoute = getLocalizedRoute(to, router, i18nConfig, locale);
|
|
394
384
|
if (typeof localeRoute === "string") {
|
|
395
385
|
return localeRoute;
|
|
396
386
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("
|
|
1
|
+
declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useLocaleHead } from "../composables/useLocaleHead.js";
|
|
2
|
-
import { useHead, defineNuxtPlugin, useRuntimeConfig } from "#
|
|
3
|
-
import { useRequestURL } from "#imports";
|
|
2
|
+
import { useRequestURL, useHead, defineNuxtPlugin, useRuntimeConfig } from "#imports";
|
|
4
3
|
const host = process.env.HOST ?? "localhost";
|
|
5
4
|
const port = process.env.PORT ?? "host";
|
|
6
5
|
export default defineNuxtPlugin((nuxtApp) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
declare const _default: import("
|
|
1
|
+
declare const _default: import("nuxt/app").Plugin<{
|
|
2
2
|
defineI18nRoute: (routeDefinition: {
|
|
3
3
|
locales?: string[] | Record<string, Record<string, string>>;
|
|
4
4
|
localeRoutes?: Record<string, string>;
|
|
5
5
|
}) => Promise<void | import("vue-router").NavigationFailure>;
|
|
6
|
-
}> & import("
|
|
6
|
+
}> & import("nuxt/app").ObjectPlugin<{
|
|
7
7
|
defineI18nRoute: (routeDefinition: {
|
|
8
8
|
locales?: string[] | Record<string, Record<string, string>>;
|
|
9
9
|
localeRoutes?: Record<string, string>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("
|
|
1
|
+
declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getQuery, getCookie } from "h3";
|
|
2
2
|
import { interpolate, useTranslationHelper } from "nuxt-i18n-micro-core";
|
|
3
|
+
const i18nHelper = useTranslationHelper();
|
|
3
4
|
async function fetchTranslations(locale) {
|
|
4
5
|
try {
|
|
5
6
|
const translations = await $fetch(`/_locales/general/${locale}/data.json`);
|
|
@@ -10,14 +11,14 @@ async function fetchTranslations(locale) {
|
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
export const useTranslationServerMiddleware = async (event, defaultLocale, currentLocale) => {
|
|
13
|
-
const { getTranslation, loadTranslations, hasGeneralTranslation } = useTranslationHelper();
|
|
14
14
|
const locale = (currentLocale || event.context.params?.locale || getQuery(event)?.locale || getCookie(event, "user-locale") || event.headers.get("accept-language")?.split(",")[0] || defaultLocale || "en").toString();
|
|
15
|
-
|
|
15
|
+
i18nHelper.setLocale(locale);
|
|
16
|
+
if (!i18nHelper.hasGeneralTranslation()) {
|
|
16
17
|
const translations = await fetchTranslations(locale);
|
|
17
|
-
await loadTranslations(
|
|
18
|
+
await i18nHelper.loadTranslations(translations);
|
|
18
19
|
}
|
|
19
20
|
function t(key, params, defaultValue) {
|
|
20
|
-
let translation = getTranslation(
|
|
21
|
+
let translation = i18nHelper.getTranslation("index", key);
|
|
21
22
|
if (!translation) {
|
|
22
23
|
translation = defaultValue || key;
|
|
23
24
|
}
|
package/dist/utils.mjs
CHANGED
|
@@ -48,7 +48,7 @@ const isLocaleDefault = (locale, defaultLocale, includeDefaultLocaleRoute) => {
|
|
|
48
48
|
};
|
|
49
49
|
const buildFullPath = (locale, basePath, customRegex) => {
|
|
50
50
|
const regexString = normalizeRegex(customRegex?.toString());
|
|
51
|
-
const localeParam = Array.isArray(locale) ?
|
|
51
|
+
const localeParam = regexString ? regexString : Array.isArray(locale) ? locale.join("|") : locale;
|
|
52
52
|
return normalizePath(path.posix.join("/", `:locale(${localeParam})`, basePath));
|
|
53
53
|
};
|
|
54
54
|
const normalizeRegex = (toNorm) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nuxt-i18n-micro",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.1",
|
|
4
4
|
"description": "Nuxt I18n Micro is a lightweight, high-performance internationalization module for Nuxt, designed to handle multi-language support with minimal overhead, fast build times, and efficient runtime performance.",
|
|
5
5
|
"repository": "s00d/nuxt-i18n-micro",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,27 +47,27 @@
|
|
|
47
47
|
"internals.d.ts"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@nuxt/devtools-kit": "^1.
|
|
51
|
-
"@nuxt/kit": "3.
|
|
50
|
+
"@nuxt/devtools-kit": "^1.7.0",
|
|
51
|
+
"@nuxt/kit": "^3.15.1",
|
|
52
52
|
"chokidar": "^3.6.0",
|
|
53
53
|
"sirv": "^2.0.4",
|
|
54
54
|
"ufo": "^1.5.4",
|
|
55
|
-
"nuxt-i18n-micro-test-utils": "1.0.
|
|
56
|
-
"nuxt-i18n-micro-core": "1.0.
|
|
55
|
+
"nuxt-i18n-micro-test-utils": "1.0.4",
|
|
56
|
+
"nuxt-i18n-micro-core": "1.0.11"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/jest": "^29.5.14",
|
|
60
|
-
"@nuxt/devtools": "^1.
|
|
61
|
-
"@nuxt/devtools-ui-kit": "^1.
|
|
60
|
+
"@nuxt/devtools": "^1.7.0",
|
|
61
|
+
"@nuxt/devtools-ui-kit": "^1.7.0",
|
|
62
62
|
"@nuxt/eslint-config": "0.7.4",
|
|
63
63
|
"@nuxt/module-builder": "^0.8.4",
|
|
64
|
-
"@nuxt/schema": "3.
|
|
64
|
+
"@nuxt/schema": "^3.15.1",
|
|
65
65
|
"@nuxt/test-utils": "^3.15.1",
|
|
66
66
|
"@playwright/test": "^1.49.1",
|
|
67
67
|
"@types/node": "^20.17.10",
|
|
68
68
|
"changelogen": "^0.5.7",
|
|
69
69
|
"eslint": "^8.57.1",
|
|
70
|
-
"nuxt": "3.
|
|
70
|
+
"nuxt": "^3.15.1",
|
|
71
71
|
"typescript": "5.6.3",
|
|
72
72
|
"vitepress": "^1.5.0",
|
|
73
73
|
"vitest": "^2.1.8",
|