🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

vue-i18n-routing

Package Overview
Dependencies
Maintainers
1
Versions
239
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-i18n-routing - npm Package Compare versions

Comparing version

to
0.0.0-190b377

8

dist/vue-i18n-routing.cjs.js

@@ -1,5 +0,5 @@

"use strict";var W=Object.defineProperty,k=Object.defineProperties;var H=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var y=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var O=(e,t,a)=>t in e?W(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,F=(e,t)=>{for(var a in t||(t={}))y.call(t,a)&&O(e,a,t[a]);if(b)for(var a of b(t))D.call(t,a)&&O(e,a,t[a]);return e},P=(e,t)=>k(e,H(t));var V=(e,t)=>{var a={};for(var r in e)y.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(e!=null&&b)for(var r of b(e))t.indexOf(r)<0&&D.call(e,r)&&(a[r]=e[r]);return a};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var m=require("vue-demi"),A=require("@intlify/vue-router-bridge"),Y=require("@intlify/vue-i18n-bridge");function J(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var K=J(A);/*!
* shared v9.2.0-beta.26
* (c) 2021 kazuya kawaguchi
"use strict";var fe=Object.defineProperty,de=Object.defineProperties;var he=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var G=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var q=(e,t,o)=>t in e?fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,D=(e,t)=>{for(var o in t||(t={}))G.call(t,o)&&q(e,o,t[o]);if(x)for(var o of x(t))H.call(t,o)&&q(e,o,t[o]);return e},y=(e,t)=>de(e,he(t));var W=(e,t)=>{var o={};for(var a in e)G.call(e,a)&&t.indexOf(a)<0&&(o[a]=e[a]);if(e!=null&&x)for(var a of x(e))t.indexOf(a)<0&&H.call(e,a)&&(o[a]=e[a]);return o};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var m=require("vue-demi"),S=require("@intlify/vue-router-bridge"),J=require("@intlify/vue-i18n-bridge");function me(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var _e=me(S);/*!
* shared v9.2.0-beta.30
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/const U=Object.assign,T=e=>typeof e=="string",Q=e=>typeof e=="symbol";function Z(e){e=e||[];const t=[];for(const a of e)T(a)?t.push({code:a}):t.push(a);return t}function I(e,t){return m.isRef(e.locale)&&t==="composition"}function w(e){return"global"in e&&"mode"in e}function z(e){return w(e)?I(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function ee(e,t){w(e)?I(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:m.isRef(e.locale)&&(e.locale.value=t)}function te(e,t,a){return e.replace(/\/+$/,"")+(t?"/":"")||(a?"":"/")}function ae(e={}){const t=Y.useI18n(),a=A.useRouter(),r=A.useRoute(),R=e.defaultLocaleRouteNameSuffix||a.__defaultLocaleRouteNameSuffix,g=e.defaultLocale||a.__defaultLocale,_=e.routesNameSeparator||a.__routesNameSeparator,L=e.strategy||a.__strategy;function s(o){const c=o!=null?o:m.isRef(r)?r.value:r;return c.name?C(c.name).split(_)[0]:void 0}function h(o,c){let l=C(o)+(L==="no_prefix"?"":_+c);return c===g&&L==="prefix_and_default"&&(l+=_+R),l}function n(o,c){const l=c||z(t);let f=o;T(o)&&(o[0]==="/"?f={path:o}:f={name:o});let u=U({},f);if(u.path&&!u.name){const d=a.resolve(u),v=m.isVue2?d.route:d,E=s(v);T(E)&&(u={name:h(E,l),params:v.params,query:v.query,hash:v.hash})}else{u.name=h(u.name,l);const{params:d}=u;d&&d["0"]===void 0&&d.pathMatch&&(d["0"]=d.pathMatch)}const S=a.resolve(u);return(m.isVue2?S.route.name:S.name)?S:a.resolve(o)}function p(o,c){const l=n(o,c);return l==null?"":m.isVue2?l.route.redirectedFrom||l.route.fullPath:l.redirectedFrom||l.fullPath}function x(o,c){const l=n(o,c);return l==null?void 0:m.isVue2?l.route:l}function $(o,c){const l=n(o,c);return l==null?void 0:m.isVue2?l.location:l.href}function i(o){const c=s();if(!c)return"";const v=m.isVue2&&m.isRef(r)?r.value:r,{params:l}=v,f=V(v,["params"]),u={},S=U({},f,{name:c,params:P(F(F({},l),u),{0:l.pathMatch})}),d=p(S,o);return console.log("switchLocalePath",t.locale.value,o,d),d}return{getRouteBaseName:s,localePath:p,localeRoute:x,localeLocation:$,switchLocalePath:i}}function C(e){return T(e)?e:Q(e)?e.toString():"(null)"}const oe={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},X="",M=oe.PREFIX_EXCEPT_DEFAULT,j=!1,q="___",G="default";function B(e,{defaultLocale:t=X,strategy:a=M,trailingSlash:r=j,routesNameSeparator:R=q,defaultLocaleRouteNameSuffix:g=G,includeUprefixedFallback:_=!1,locales:L=[]}={}){if(a==="no_prefix")return e;const s=L.map(n=>T(n)?n:n.code);function h(n,p,x=!1,$=!1){return n.redirect&&(!n.component||!n.file)?[n]:p.reduce((o,c)=>{const{name:l}=n;let{path:f}=n;const u=F({},n);l&&(u.name=`${l}${R}${c}`),n.children&&(u.children=n.children.reduce((E,N)=>[...E,...h(N,[c],!0,$)],[]));const S=c===t;if(S&&a==="prefix_and_default")if(x)x&&$&&l&&(u.name+=`${R}${g}`);else{const E=P(F({},u),{path:f});if(l&&(E.name=`${u.name}${R}${g}`),n.children){E.children=[];for(const N of n.children)E.children=E.children.concat(h(N,[c],!0,!0))}o.push(E)}const d=x&&!f.startsWith("/"),v=!d&&!(S&&a==="prefix_except_default");return v&&(f=`/${c}${f}`),f&&(f=te(f,r,d)),v&&S&&a==="prefix"&&_&&o.push(F({},n)),u.path=f,o.push(u),o},[])}return e.reduce((n,p)=>[...n,...h(p,s||[])],[])}function le(e,{locales:t=[]}={}){if(!I(e.global,e.mode))throw new Error("TODO:");const a=m.ref(t);e.global.locales=m.computed(()=>a.value),console.log("... extends i18n done")}function ne(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function re(e,t,a){const r=`(${e.join("|")})`,R=`(?:${t}${a})?`,g=new RegExp(`${t}${r}${R}$`,"i"),_=ne(e);return s=>{if(s.name){const n=(T(s.name)?s.name:s.name.toString()).match(g);if(n&&n.length>1)return n[1]}else if(s.path){const h=s.path.match(_);if(h&&h.length>1)return h[1]}return""}}function ce(e){var t,a,r,R,g,_,L,s;return e.version=(t=e.version)!=null?t:4,e.defaultLocale=(a=e.defaultLocale)!=null?a:X,e.strategy=(r=e.strategy)!=null?r:M,e.trailingSlash=(R=e.trailingSlash)!=null?R:j,e.routesNameSeparator=(g=e.routesNameSeparator)!=null?g:q,e.defaultLocaleRouteNameSuffix=(_=e.defaultLocaleRouteNameSuffix)!=null?_:G,e.locales=(L=e.locales)!=null?L:[],e.routes=(s=e.routes)!=null?s:[],e}function ue(e,t={}){const{version:a,defaultLocale:r,locales:R,strategy:g,trailingSlash:_,routesNameSeparator:L,defaultLocaleRouteNameSuffix:s,routes:h}=ce(t),n=Z(R),p=n.map(o=>o.code),x=re(p,L,s);le(e,{locales:n});const $=B(h,{locales:R,defaultLocale:r,strategy:g,trailingSlash:_,routesNameSeparator:L,defaultLocaleRouteNameSuffix:s});t.routes=$;let i=null;if(m.isVue3&&a===4)i=A.createRouter(t);else if(m.isVue2&&a===3)i=new K.default(t);else throw new Error("TODO:");return i.__defaultLocale=r,i.__localeCodes=p,i.__strategy=g,i.__trailingSlash=_,i.__routesNameSeparator=L,i.__defaultLocaleRouteNameSuffix=s,i.beforeEach((o,c,l)=>{console.log("beforeEach",o,c);const f=z(e),u=x(o)||f||r||"";console.log("currentLocale",f,"finalLocale",u),f!==u&&ee(e,u),l()}),console.log("create router",i),i}const se="";exports.VERSION=se;exports.createRouter=ue;exports.localizeRoutes=B;exports.useI18nRouting=ae;
*/const K=Object.assign,Le=Array.isArray,ge=e=>typeof e=="function",T=e=>typeof e=="string",Re=e=>typeof e=="boolean",pe=e=>typeof e=="symbol",Ee=e=>e!==null&&typeof e=="object",ve=/\/$|\/\?/;function b(e="",t=!1){return t?ve.test(e):e.endsWith("/")}function Se(e="",t=!1){if(!t)return(b(e)?e.slice(0,-1):e)||"/";if(!b(e,!0))return e||"/";const[o,...a]=e.split("?");return(o.slice(0,-1)||"/")+(a.length?`?${a.join("?")}`:"")}function Ae(e="",t=!1){if(!t)return e.endsWith("/")?e:e+"/";if(b(e,!0))return e||"/";const[o,...a]=e.split("?");return o+"/"+(a.length?`?${a.join("?")}`:"")}const Ie=typeof window!="undefined";function De(e,t){typeof console!="undefined"&&(console.warn("[vue-i18n-routing] "+e),t&&console.warn(t.stack))}function Z(e){e=e||[];const t=[];for(const o of e)T(o)?t.push({code:o}):t.push(o);return t}function X(e,t){return m.isRef(e.locale)&&t==="composition"}function ee(e){return"global"in e&&"mode"in e}function w(e){return ee(e)?X(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function te(e,t){ee(e)?X(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:m.isRef(e.locale)&&(e.locale.value=t)}function Te(e,t,o){return e.replace(/\/+$/,"")+(t?"/":"")||(o?"":"/")}function Q(e){return S.isVueRouter4,m.isRef(e)?e.value:e}function oe(e){return T(e)?e:pe(e)?e.toString():"(null)"}function Y(e,t,{defaultLocale:o,strategy:a,routesNameSeparator:l,defaultLocaleRouteNameSuffix:n}){let r=oe(e)+(a==="no_prefix"?"":l+t);return t===o&&a==="prefix_and_default"&&(r+=l+n),r}function ae(e,t){return ge(e)?e(t):e}function Fe(e,t){const o=[];for(const[a,l]of t.entries()){const n=e.find(r=>r.iso.toLowerCase()===l.toLowerCase());if(n){o.push({code:n.code,score:1-a/t.length});break}}for(const[a,l]of t.entries()){const n=l.split("-")[0].toLowerCase(),r=e.find(c=>c.iso.split("-")[0].toLowerCase()===n);if(r){o.push({code:r.code,score:.999-a/t.length});break}}return o}const Pe=Fe;function xe(e,t){return e.score===t.score?t.code.length-e.code.length:t.score-e.score}const ye=xe;function we(e,t,{matcher:o=Pe,comparer:a=ye}={}){const l=[];for(const r of e){const{code:c}=r,u=r.iso||c;l.push({code:c,iso:u})}const n=o(l,t);return n.length>1&&n.sort(a),n.length?n[0].code:""}const P={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},N="",$=P.PREFIX_EXCEPT_DEFAULT,ne=!1,U="___",M="default",Ne="ltr",le="",$e=new Set([P.PREFIX_AND_DEFAULT,P.PREFIX_EXCEPT_DEFAULT]);function C(e=S.useRoute(),{router:t=S.useRouter(),routesNameSeparator:o=U}={}){const a=o||t.__routesNameSeparator,l=m.unref(e);return l.name?oe(l.name).split(a)[0]:null}function re(e,t,o){const a=j(e,t,o);return a==null?"":m.isVue3?a.redirectedFrom||a.fullPath:a.route.redirectedFrom||a.route.fullPath}function ce(e,t,o){const a=j(e,t,o);return a==null?void 0:m.isVue3?a:a.route}function Ue(e,t,o){const a=j(e,t,o);return a==null?void 0:m.isVue3?a:a.location}function j(e,t,{router:o=S.useRouter(),i18n:a=J.useI18n(),defaultLocale:l=N,defaultLocaleRouteNameSuffix:n=M,routesNameSeparator:r=U,strategy:c=$,trailingSlash:u=!1}={}){const i=o.__defaultLocaleRouteNameSuffix||n,f=o.__defaultLocale||l,s=o.__routesNameSeparator||r,_=o.__strategy||c,L=t||w(a);let R=e;T(e)&&(R[0]==="/"?R={path:e}:R={name:e});let h=K({},R);if(h.path&&!h.name){const d=o.resolve(h),g=m.isVue3?d:d.route,A=C(g);T(A)?h={name:Y(A,L,{defaultLocale:f,strategy:_,routesNameSeparator:s,defaultLocaleRouteNameSuffix:i}),params:g.params,query:g.query,hash:g.hash}:(!(L===l&&$e.has(_))&&_!==P.NO_PREFIX&&(h.path=`/${L}${h.path}`),h.path=u?Ae(h.path,!0):Se(h.path,!0))}else{h.name=Y(h.name,L,{defaultLocale:f,strategy:_,routesNameSeparator:s,defaultLocaleRouteNameSuffix:i});const{params:d}=h;d&&d["0"]===void 0&&d.pathMatch&&(d["0"]=d.pathMatch)}const p=o.resolve(h);return(m.isVue3?p.name:p.route.name)?p:o.resolve(e)}function V(e,t){const o=t&&t.route||S.useRoute(),a=C(o,t);if(!a)return"";const i=!m.isVue3&&m.isRef(o)?o.value:o,{params:l}=i,n=W(i,["params"]),r={},c=K({},n,{name:a,params:y(D(D({},l),r),{0:l.pathMatch})});return re(c,e,t)}function Ce({addDirAttribute:e=!1,addSeoAttributes:t=!1,strategy:o=$,defaultLocale:a=N,route:l=S.useRoute(),router:n=S.useRouter(),i18n:r=J.useI18n()}={}){const c=n,u=a||c.__defaultLocale,i=o||c.__strategy,f=m.ref({htmlAttrs:{},link:[],meta:[]});function s(){f.value={htmlAttrs:{},link:[],meta:[]}}function _(L){if(r.locales==null||r.__baseUrl==null)return;const R=w(r),h=Z(r.locales.value).find(g=>g.code===R)||{code:R},p=h.iso,d=h.dir||n.__defaultDirection;if(e&&(f.value.htmlAttrs.dir=d),t&&R&&r.locales){p&&(f.value.htmlAttrs.lang=p);const g=r.locales.value;Oe(g,r.__baseUrl,f.value.link,{defaultLocale:u,strategy:i,route:l,router:n,i18n:r}),be(r.__baseUrl,f.value.link,t,{route:L,router:n,i18n:r}),Ve(h,p,f.value.meta),Be(g,p,f.value.meta)}}if(Ie)if(m.isVue3){const L=m.watchEffect(()=>{s(),_(Q(c.currentRoute))});m.onUnmounted(()=>L())}else{const L=c.afterEach((R,h)=>{s(),_(R)});m.onUnmounted(()=>L()),_(l)}else _(Q(c.currentRoute));return f}function Oe(e,t,o,a){if(a.strategy===P.NO_PREFIX)return;const l=new Map;for(const n of e){const r=n.iso;if(!r){De("Locale ISO code is required to generate alternate link");continue}const[c,u]=r.split("-");c&&u&&(n.isCatchallLocale||!l.has(c))&&l.set(c,n),l.set(r,n)}for(const[n,r]of l.entries()){const c=V(r.code,a);c&&o.push({hid:`i18n-alt-${n}`,rel:"alternate",href:B(c,t),hreflang:n})}if(a.defaultLocale){const n=V(a.defaultLocale,a);n&&o.push({hid:"i18n-xd",rel:"alternate",href:B(n,t),hreflang:"x-default"})}}function be(e,t,o,a){const{route:l}=a,n=ce(y(D({},l),{name:C(l,a)}),void 0,a);if(n){let r=B(n.path,e);const c=!Re(o)&&o.canonicalQueries||[];if(c.length){const u=n.query,i=new URLSearchParams;for(const s of c)if(s in u){const _=u[s];Le(_)?_.forEach(L=>i.append(s,L||"")):i.append(s,_||"")}const f=i.toString();f&&(r=`${r}?${f}`)}t.push({hid:"i18n-can",rel:"canonical",href:r})}}function Ve(e,t,o){!(e&&t)||o.push({hid:"i18n-og",property:"og:locale",content:se(t)})}function Be(e,t,o){const a=e.filter(l=>{const n=l.iso;return n&&n!==t});if(a.length){const l=a.map(n=>({hid:`i18n-og-alt-${n.iso}`,property:"og:locale:alternate",content:se(n.iso)}));o.push(...l)}}function se(e){return(e||"").replace(/-/g,"_")}function B(e,t){return e.match(/^https?:\/\//)?e:t+e}function ue(e,{defaultLocale:t=N,strategy:o=$,trailingSlash:a=ne,routesNameSeparator:l=U,defaultLocaleRouteNameSuffix:n=M,includeUprefixedFallback:r=!1,optionsResolver:c=void 0,locales:u=[]}={}){if(o==="no_prefix")return e;const i=u.map(s=>T(s)?s:s.code);function f(s,_,L=!1,R=!1){if(s.redirect&&(!s.component||!s.file))return[s];let h=null;return c!=null&&(h=c(s,_),h==null)?[s]:_.reduce((d,g)=>{const{name:A}=s;let{path:E}=s;const v=D({},s);A&&(v.name=`${A}${l}${g}`),s.children&&(v.children=s.children.reduce((I,O)=>[...I,...f(O,[g],!0,R)],[]));const F=g===t;if(F&&o==="prefix_and_default")if(L)L&&R&&A&&(v.name+=`${l}${n}`);else{const I=y(D({},v),{path:E});if(A&&(I.name=`${v.name}${l}${n}`),s.children){I.children=[];for(const O of s.children)I.children=I.children.concat(f(O,[g],!0,!0))}d.push(I)}const z=L&&!E.startsWith("/"),k=!z&&!(F&&o==="prefix_except_default");return k&&(E=`/${g}${E}`),E&&(E=Te(E,a,z)),k&&F&&o==="prefix"&&r&&d.push(D({},s)),v.path=E,d.push(v),d},[])}return e.reduce((s,_)=>[...s,...f(_,i||[])],[])}function Xe(e,{locales:t=[],localeCodes:o=[],baseUrl:a=le}={}){if(!X(e.global,e.mode))throw new Error("TODO:");const l=m.ref(t),n=m.ref(o);e.global.locales=m.computed(()=>l.value),e.global.localeCodes=m.computed(()=>n.value),e.global.__baseUrl=ae(a,{})}function Me(e,t={}){const{version:o,defaultLocale:a,locales:l,strategy:n,trailingSlash:r,routesNameSeparator:c,defaultLocaleRouteNameSuffix:u,defaultDirection:i,baseUrl:f,routes:s,routeOptionsResolver:_}=ke(t),L=Z(l),R=L.map(g=>g.code),h=ie(R,c,u);Xe(e,{locales:L,baseUrl:f,localeCodes:R});const p=ue(s,{locales:l,defaultLocale:a,strategy:n,trailingSlash:r,routesNameSeparator:c,defaultLocaleRouteNameSuffix:u,optionsResolver:_});t.routes=p;const d=je(t,o);return d.__defaultLocale=a,d.__localeCodes=R,d.__strategy=n,d.__trailingSlash=r,d.__routesNameSeparator=c,d.__defaultLocaleRouteNameSuffix=u,d.__defaultDirection=i,d.beforeEach((g,A,E)=>{const v=w(e),F=h(g)||v||a||"";v!==F&&te(e,F),E()}),d}function je(e,t){if(m.isVue3&&t===4)return S.createRouter(e);if(m.isVue2&&t===3)return new _e.default(e);throw new Error("TODO:")}function ze(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function ie(e,t,o){const a=`(${e.join("|")})`,l=`(?:${t}${o})?`,n=new RegExp(`${t}${a}${l}$`,"i"),r=ze(e);return u=>{if(Ee(u)){if(u.name){const f=(T(u.name)?u.name:u.name.toString()).match(n);if(f&&f.length>1)return f[1]}else if(u.path){const i=u.path.match(r);if(i&&i.length>1)return i[1]}}else if(T(u)){const i=u.match(r);if(i&&i.length>1)return i[1]}return""}}function ke(e){var t,o,a,l,n,r,c,u,i,f;return e.version=(t=e.version)!=null?t:4,e.defaultLocale=(o=e.defaultLocale)!=null?o:N,e.strategy=(a=e.strategy)!=null?a:$,e.trailingSlash=(l=e.trailingSlash)!=null?l:ne,e.routesNameSeparator=(n=e.routesNameSeparator)!=null?n:U,e.defaultLocaleRouteNameSuffix=(r=e.defaultLocaleRouteNameSuffix)!=null?r:M,e.locales=(c=e.locales)!=null?c:[],e.defaultDirection=(u=e.defaultDirection)!=null?u:Ne,e.baseUrl=(i=e.baseUrl)!=null?i:le,e.routes=(f=e.routes)!=null?f:[],e}const qe="0.0.0";exports.VERSION=qe;exports.createLocaleFromRouteGetter=ie;exports.createRouter=Me;exports.findBrowserLocale=we;exports.getLocale=w;exports.getRouteBaseName=C;exports.localeLocation=Ue;exports.localePath=re;exports.localeRoute=ce;exports.localizeRoutes=ue;exports.resolveBaseUrl=ae;exports.setLocale=te;exports.switchLocalePath=V;exports.useI18nHead=Ce;

@@ -0,11 +1,73 @@

import { Composer } from '@intlify/vue-i18n-bridge';
import type { I18n } from '@intlify/vue-i18n-bridge';
import { Locale } from '@intlify/vue-i18n-bridge';
import type { Locale } from '@intlify/vue-i18n-bridge';
import type { RawLocation } from '@intlify/vue-router-bridge';
import type { Ref } from 'vue-demi';
import type { Route as Route_2 } from '@intlify/vue-router-bridge';
import type { RouteConfig } from '@intlify/vue-router-bridge';
import type { RouteLocation } from '@intlify/vue-router-bridge';
import type { RouteLocationNormalized } from '@intlify/vue-router-bridge';
import type { RouteLocationNormalizedLoaded } from '@intlify/vue-router-bridge';
import type { RouteLocationRaw } from '@intlify/vue-router-bridge';
import type { Router } from '@intlify/vue-router-bridge';
import type { RouterOptions } from '@intlify/vue-router-bridge';
import { useRoute } from '@intlify/vue-router-bridge';
import { useRouter } from '@intlify/vue-router-bridge';
import type { VueRouter } from '@intlify/vue-router-bridge';
export declare type BaseUrlResolveHandler = (context: unknown) => string;
/**
* The browser locale info
*
* @remarks
* This type is used by {@link FindBrowserLocaleOptions#sorter | sorter} in {@link findBrowserLocale} function
*/
export declare type BrowserLocale = {
/**
* The locale code, such as BCP 47 (e.g `en-US`), or `ja`
*/
code: string;
/**
* The score number
*
* @remarks
* The score number that is used by `sorter` of {@link FindBrowserLocaleOptions}
*/
score: number;
};
/**
* The browser locale matcher
*
* @remarks
* This matcher is used by {@link findBrowserLocale} function
*
* @param locales - The target {@link LocaleObject | locale} list
* @param browserLocales - The locale code list that is used in browser
*
* @returns The matched {@link BrowserLocale | locale info}
*/
export declare type BrowserLocaleMatcher = (locales: TargetLocale[], browserLocales: string[]) => BrowserLocale[];
export declare type ComposableOptions = {
route?: ReturnType<typeof useRoute>;
router?: ReturnType<typeof useRouter>;
i18n?: Composer;
};
/**
* Options to compute route localizing
*
* @remarks
* The route options that is compute the route to be localized on {@link localizeRoutes}
*/
export declare type ComputedRouteOptions = {
locales: readonly string[];
paths: Record<string, string>;
};
export declare function createLocaleFromRouteGetter(localeCodes: string[], routesNameSeparator: string, defaultLocaleRouteNameSuffix: string): (route: Route_2 | RouteLocationNormalizedLoaded | RouteLocationNormalized | string) => string;
/**
* Create a Vue Router instance

@@ -24,2 +86,4 @@ *

* At the Vue 2 will return a [Vue Router v3 instance](https://router.vuejs.org/api/#router-construction-options), and at the Vue 3 will return a [Vue Router v4 instance](https://next.router.vuejs.org/api/#createrouter).
*
* @public
*/

@@ -33,13 +97,85 @@ export declare function createRouter<Options extends VueI18nRoutingOptions = VueI18nRoutingOptions>(i18n: I18n, options?: Options): Options['version'] extends 4 ? Router : VueRouter;

export declare interface I18nRouting {
getRouteBaseName(givenRoute?: Route_2 | RouteLocationNormalizedLoaded): string;
localePath(route: any, locale?: Locale): string;
localeRoute(route: any, locale?: Locale): any;
localeLocation(route: any, locale?: Locale): any;
switchLocalePath(locale: Locale): void;
/**
* Find the browser locale
*
* @param locales - The target {@link LocaleObject | locale} list
* @param browserLocales - The locale code list that is used in browser
* @param options - The options for {@link findBrowserLocale} function
*
* @returns The matched the locale code
*/
export declare function findBrowserLocale(locales: LocaleObject[], browserLocales: string[], { matcher, comparer }?: FindBrowserLocaleOptions): string | '';
/**
* The options for {@link findBrowserLocale} function
*/
export declare type FindBrowserLocaleOptions = {
matcher?: BrowserLocaleMatcher;
comparer?: (a: BrowserLocale, b: BrowserLocale) => number;
};
/**
* Get a locale
*
* @param i18n - An [I18n](https://vue-i18n.intlify.dev/api/general.html#i18n) instance or a [Composer](https://vue-i18n.intlify.dev/api/composition.html#composer) instance
*
* @returns A locale
*/
export declare function getLocale(i18n: I18n | Composer): Locale;
/**
* Get route base name
*
* @param givenRoute - A route object, if not provided, the route is returned with `useRoute` will be used
* @param options - An options, see about details {@link I18nRoutingOptions}
*
* @returns The route base name, if route name is not defined, return null
*/
export declare function getRouteBaseName(givenRoute?: Route_2 | RouteLocationNormalizedLoaded, { router, routesNameSeparator }?: I18nRoutingOptions): string | null;
/**
* I18n header meta info
*/
export declare interface I18nHeadMetaInfo {
htmlAttrs?: MetaAttrs;
meta?: MetaAttrs[];
link?: MetaAttrs[];
}
export declare type I18nRoutingOptions = Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'defaultLocaleRouteNameSuffix' | 'trailingSlash' | 'locales' | 'routesNameSeparator'>;
/**
* Options for {@link useI18nHead} function
*/
export declare interface I18nHeadOptions {
/**
* Adds a `dir` attribute to the HTML element.
*
* @defaultValue false
*/
addDirAttribute?: boolean;
/**
* Adds various SEO attributes.
*
* @defaultValue false
*/
addSeoAttributes?: boolean | SeoAttributesOptions;
}
/**
* Options for vue-i18n-routing common
*/
export declare type I18nRoutingOptions = Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'defaultLocaleRouteNameSuffix' | 'trailingSlash' | 'locales' | 'routesNameSeparator'> & ComposableOptions;
/**
* Resolve locale location
*
* @param route - A route location. The path or name of the route or an object for more complex routes
* @param locale - A locale code, if not specified, uses the current locale
* @param options - An options, see about details {@link I18nRoutingOptions}
*
* @returns Returns the location object for a given route, the location object is resolved by vue-router rather than just a full route path.
*/
export declare function localeLocation(route: RawLocation | RouteLocationRaw, locale?: Locale, // TODO: locale should be more type inference (completion)
options?: I18nRoutingOptions): Location | RouteLocation | undefined;
/**
* Locale object

@@ -57,7 +193,54 @@ */

export declare function localizeRoutes(routes: VueI18nRoute[], { defaultLocale, strategy, trailingSlash, routesNameSeparator, defaultLocaleRouteNameSuffix, includeUprefixedFallback, locales }?: Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'locales' | 'routesNameSeparator' | 'trailingSlash' | 'defaultLocaleRouteNameSuffix'> & {
/**
* Resolve locale path
*
* @param route - A route location. The path or name of the route or an object for more complex routes
* @param locale - A locale code, if not specified, uses the current locale
* @param options - An options, see about details {@link I18nRoutingOptions}
*
* @returns Returns the localized URL for a given route
*/
export declare function localePath(route: RawLocation | RouteLocationRaw, locale?: Locale, // TODO: locale should be more type inference (completion)
options?: I18nRoutingOptions): string;
/**
* Resolve locale route
*
* @param route - A route location. The path or name of the route or an object for more complex routes
* @param locale - A locale code, if not specified, uses the current locale
* @param options - An options, see about details {@link I18nRoutingOptions}
*
* @returns Returns the route object for a given route, the route object is resolved by vue-router rather than just a full route path.
*/
export declare function localeRoute(route: RawLocation | RouteLocationRaw, locale?: Locale, // TODO: locale should be more type inference (completion)
options?: I18nRoutingOptions): Route_2 | ReturnType<Router['resolve']> | undefined;
/**
* Localize routes
*
* @param routes - Some routes
* @param options - An options
*
* @returns Localized routes
*
* @public
*/
export declare function localizeRoutes(routes: VueI18nRoute[], { defaultLocale, strategy, trailingSlash, routesNameSeparator, defaultLocaleRouteNameSuffix, includeUprefixedFallback, optionsResolver, locales }?: Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'locales' | 'routesNameSeparator' | 'trailingSlash' | 'defaultLocaleRouteNameSuffix'> & {
includeUprefixedFallback?: boolean;
optionsResolver?: RouteOptionsResolver;
}): VueI18nRoute[];
export declare type MetaAttrs = Record<string, any>;
/**
* Resolve base url
*
* @param baseUrl - A base url to resolve on SEO and domain. if you want to resolve with dynamically, you can spacify {@link BaseUrlResolveHandler}
* @param context - A context to resolve base url, if you want to resolve base url with {@link BaseUrlResolveHandler}
*
* @returns A resolved base url
*/
export declare function resolveBaseUrl(baseUrl: string | BaseUrlResolveHandler, context: unknown): string;
/**
* Route config for vue-router v4

@@ -84,2 +267,27 @@ */

/**
* Resolver for route localizing options
*/
export declare type RouteOptionsResolver = (route: VueI18nRoute, allowedLocaleCodes: string[]) => ComputedRouteOptions | null;
/**
* SEO Attribute options
*/
export declare interface SeoAttributesOptions {
/**
* An array of strings corresponding to query params you would like to include in your canonical URL.
*
* @defaultValue []
*/
canonicalQueries?: string[];
}
/**
* Set a locale
*
* @param i18n - An [I18n](https://vue-i18n.intlify.dev/api/general.html#i18n) instance or a [Composer](https://vue-i18n.intlify.dev/api/composition.html#composer) instance
* @param locale - A target locale
*/
export declare function setLocale(i18n: I18n | Composer, locale: Locale): void;
declare const STRATEGIES: {

@@ -97,5 +305,30 @@ readonly PREFIX: "prefix";

/**
* Switch locale path
*
* @param locale - A locale code, if not specified, uses the current locale
* @param options - An options, see about details {@link I18nRoutingOptions}
*
* @returns Returns a link to the current route in another language
*/
export declare function switchLocalePath(locale: Locale, options?: I18nRoutingOptions): string;
/**
* The target locale info
*
* @remarks
* This type is used by {@link BrowserLocaleMatcher} first argument
*/
export declare type TargetLocale = Required<Pick<LocaleObject, 'code' | 'iso'>>;
declare type UnionToIntersection<T> = (T extends any ? (k: T) => void : never) extends (k: infer U) => void ? U : never;
export declare function useI18nRouting(options?: I18nRoutingOptions): I18nRouting;
/**
* Generate SEO head meta information
*
* @param options - An options, see about details {@link I18nHeadOptions}
*
* @returns Genereated SEO head meta information
*/
export declare function useI18nHead({ addDirAttribute, addSeoAttributes, strategy, defaultLocale, route, router, i18n }?: Pick<I18nRoutingOptions, 'strategy' | 'defaultLocale'> & ComposableOptions & I18nHeadOptions): Ref<I18nHeadMetaInfo>;

@@ -108,3 +341,3 @@ /**

*/
export declare const VERSION = "";
export declare const VERSION: string;

@@ -124,3 +357,3 @@ /**

*/
export declare type VueI18nRoutingOptions = {
export declare type VueI18nRoutingOptions<BaseUrl extends BaseUrlResolveHandler = BaseUrlResolveHandler> = {
/**

@@ -151,3 +384,4 @@ * Vue Router version

*
* @remarks TODO:
* @remarks
* Can either be an array of string codes (e.g. `['en', 'fr']`) or an array of {@link LocaleObject} for more complex configurations
*

@@ -192,9 +426,47 @@ * @defaultValue []

defaultLocaleRouteNameSuffix?: string;
/**
* Default direction direction
*
* @defaultValue 'ltr'
*/
defaultDirection?: Directions;
/**
* The fallback base URL to use as a prefix for alternate URLs in hreflang tags.
*
* @remarks
* By default VueRouter's base URL will be used and only if that is not available, fallback URL will be used.
*
* Can also be a function (will be passed a Nuxt Context as a parameter) that returns a string.
*
* Useful to make base URL dynamic based on request headers.
*
* @defaultValue ''
*/
baseUrl?: string | BaseUrl;
/**
* Route options resolver
*
* @defaultValue undefined
*/
routeOptionsResolver?: RouteOptionsResolver;
} & RouterOptions;
export { }
import type { ComputedRef } from 'vue-demi'
declare module 'vue-i18n' {
export interface ComposerCustom {
locales: ComputedRef<string[] | LocaleObject[]>
/**
* List of locales
*
* @defaultValue `undefined`
*/
locales?: ComputedRef<string[] | LocaleObject[]>
/**
* List of locale codes
*
* @defaultValue `undefined`
*/
localeCodes?: ComputedRef<string[]>
__baseUrl?: string
}

@@ -204,4 +476,16 @@ }

export interface ComposerCustom {
locales: ComputedRef<string[] | LocaleObject[]>
/**
* List of locales
*
* @defaultValue `undefined`
*/
locales?: ComputedRef<string[] | LocaleObject[]>
/**
* List of locale codes
*
* @defaultValue `undefined`
*/
localeCodes?: ComputedRef<string[]>
__baseUrl?: string
}
}

@@ -32,13 +32,53 @@ var __defProp = Object.defineProperty;

};
import { isRef, isVue2, ref, computed, isVue3 } from "vue-demi";
import VueRouter3, { useRouter, useRoute, createRouter as createRouter$1 } from "@intlify/vue-router-bridge";
import { isRef, unref, isVue3, ref, watchEffect, onUnmounted, computed, isVue2 } from "vue-demi";
import VueRouter3, { isVueRouter4, useRoute, useRouter, createRouter as createRouter$1 } from "@intlify/vue-router-bridge";
import { useI18n } from "@intlify/vue-i18n-bridge";
/*!
* shared v9.2.0-beta.26
* (c) 2021 kazuya kawaguchi
* shared v9.2.0-beta.30
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/
const assign = Object.assign;
const isArray = Array.isArray;
const isFunction = (val) => typeof val === "function";
const isString = (val) => typeof val === "string";
const isBoolean = (val) => typeof val === "boolean";
const isSymbol = (val) => typeof val === "symbol";
const isObject = (val) => val !== null && typeof val === "object";
const TRAILING_SLASH_RE = /\/$|\/\?/;
function hasTrailingSlash(input = "", queryParams = false) {
if (!queryParams) {
return input.endsWith("/");
}
return TRAILING_SLASH_RE.test(input);
}
function withoutTrailingSlash(input = "", queryParams = false) {
if (!queryParams) {
return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || "/";
}
if (!hasTrailingSlash(input, true)) {
return input || "/";
}
const [s0, ...s] = input.split("?");
return (s0.slice(0, -1) || "/") + (s.length ? `?${s.join("?")}` : "");
}
function withTrailingSlash(input = "", queryParams = false) {
if (!queryParams) {
return input.endsWith("/") ? input : input + "/";
}
if (hasTrailingSlash(input, true)) {
return input || "/";
}
const [s0, ...s] = input.split("?");
return s0 + "/" + (s.length ? `?${s.join("?")}` : "");
}
const inBrowser = typeof window !== "undefined";
function warn(msg, err) {
if (typeof console !== "undefined") {
console.warn(`[vue-i18n-routing] ` + msg);
if (err) {
console.warn(err.stack);
}
}
}
function getNormalizedLocales(locales) {

@@ -79,101 +119,66 @@ locales = locales || [];

}
function useI18nRouting(options = {}) {
const $i18n = useI18n();
const $router = useRouter();
const $route = useRoute();
const defaultLocaleRouteNameSuffix = options.defaultLocaleRouteNameSuffix || $router.__defaultLocaleRouteNameSuffix;
const defaultLocale = options.defaultLocale || $router.__defaultLocale;
const routesNameSeparator = options.routesNameSeparator || $router.__routesNameSeparator;
const strategy = options.strategy || $router.__strategy;
function getRouteBaseName(givenRoute) {
const route = givenRoute != null ? givenRoute : isRef($route) ? $route.value : $route;
if (!route.name) {
return;
}
const name = getRouteName(route.name);
return name.split(routesNameSeparator)[0];
function toRawRoute(maybeRoute) {
return isVueRouter4 ? isRef(maybeRoute) ? maybeRoute.value : maybeRoute : isRef(maybeRoute) ? maybeRoute.value : maybeRoute;
}
function getRouteName(routeName) {
return isString(routeName) ? routeName : isSymbol(routeName) ? routeName.toString() : "(null)";
}
function getLocaleRouteName(routeName, locale, {
defaultLocale,
strategy,
routesNameSeparator,
defaultLocaleRouteNameSuffix
}) {
let name = getRouteName(routeName) + (strategy === "no_prefix" ? "" : routesNameSeparator + locale);
if (locale === defaultLocale && strategy === "prefix_and_default") {
name += routesNameSeparator + defaultLocaleRouteNameSuffix;
}
function getLocaleRouteName(routeName, locale) {
let name = getRouteName(routeName) + (strategy === "no_prefix" ? "" : routesNameSeparator + locale);
if (locale === defaultLocale && strategy === "prefix_and_default") {
name += routesNameSeparator + defaultLocaleRouteNameSuffix;
return name;
}
function resolveBaseUrl(baseUrl, context) {
if (isFunction(baseUrl)) {
return baseUrl(context);
}
return baseUrl;
}
function matchBrowserLocale(locales, browserLocales) {
const matchedLocales = [];
for (const [index, browserCode] of browserLocales.entries()) {
const matchedLocale = locales.find((l) => l.iso.toLowerCase() === browserCode.toLowerCase());
if (matchedLocale) {
matchedLocales.push({ code: matchedLocale.code, score: 1 - index / browserLocales.length });
break;
}
return name;
}
function resolveRoute(route, locale) {
const _locale = locale || getLocale($i18n);
let _route = route;
if (isString(route)) {
if (route[0] === "/") {
_route = { path: route };
} else {
_route = { name: route };
}
for (const [index, browserCode] of browserLocales.entries()) {
const languageCode = browserCode.split("-")[0].toLowerCase();
const matchedLocale = locales.find((l) => l.iso.split("-")[0].toLowerCase() === languageCode);
if (matchedLocale) {
matchedLocales.push({ code: matchedLocale.code, score: 0.999 - index / browserLocales.length });
break;
}
let localizedRoute = assign({}, _route);
if (localizedRoute.path && !localizedRoute.name) {
const _resolvedRoute = $router.resolve(localizedRoute);
const resolvedRoute2 = !isVue2 ? _resolvedRoute : _resolvedRoute.route;
const resolvedRouteName = getRouteBaseName(resolvedRoute2);
if (isString(resolvedRouteName)) {
localizedRoute = {
name: getLocaleRouteName(resolvedRouteName, _locale),
params: resolvedRoute2.params,
query: resolvedRoute2.query,
hash: resolvedRoute2.hash
};
}
} else {
localizedRoute.name = getLocaleRouteName(localizedRoute.name, _locale);
const { params } = localizedRoute;
if (params && params["0"] === void 0 && params.pathMatch) {
params["0"] = params.pathMatch;
}
}
const resolvedRoute = $router.resolve(localizedRoute);
if (isVue2 ? resolvedRoute.route.name : resolvedRoute.name) {
return resolvedRoute;
}
return $router.resolve(route);
}
function localePath(route, locale) {
const localizedRoute = resolveRoute(route, locale);
return localizedRoute == null ? "" : isVue2 ? localizedRoute.route.redirectedFrom || localizedRoute.route.fullPath : localizedRoute.redirectedFrom || localizedRoute.fullPath;
return matchedLocales;
}
const DefaultBrowserLocaleMatcher = matchBrowserLocale;
function compareBrowserLocale(a, b) {
if (a.score === b.score) {
return b.code.length - a.code.length;
}
function localeRoute(route, locale) {
const resolved = resolveRoute(route, locale);
return resolved == null ? void 0 : isVue2 ? resolved.route : resolved;
return b.score - a.score;
}
const DefaultBrowerLocaleComparer = compareBrowserLocale;
function findBrowserLocale(locales, browserLocales, { matcher = DefaultBrowserLocaleMatcher, comparer = DefaultBrowerLocaleComparer } = {}) {
const normalizedLocales = [];
for (const l of locales) {
const { code } = l;
const iso = l.iso || code;
normalizedLocales.push({ code, iso });
}
function localeLocation(route, locale) {
const resolved = resolveRoute(route, locale);
return resolved == null ? void 0 : isVue2 ? resolved.location : resolved.href;
const matchedLocales = matcher(normalizedLocales, browserLocales);
if (matchedLocales.length > 1) {
matchedLocales.sort(comparer);
}
function switchLocalePath(locale) {
const name = getRouteBaseName();
if (!name) {
return "";
}
const _a = isVue2 && isRef($route) ? $route.value : $route, { params } = _a, routeCopy = __objRest(_a, ["params"]);
const langSwitchParams = {};
const baseRoute = assign({}, routeCopy, {
name,
params: __spreadProps(__spreadValues(__spreadValues({}, params), langSwitchParams), {
0: params.pathMatch
})
});
const path = localePath(baseRoute, locale);
console.log("switchLocalePath", $i18n.locale.value, locale, path);
return path;
}
return {
getRouteBaseName,
localePath,
localeRoute,
localeLocation,
switchLocalePath
};
return matchedLocales.length ? matchedLocales[0].code : "";
}
function getRouteName(routeName) {
return isString(routeName) ? routeName : isSymbol(routeName) ? routeName.toString() : "(null)";
}
const STRATEGIES = {

@@ -190,2 +195,289 @@ PREFIX: "prefix",

const DEFAULT_LOCALE_ROUTE_NAME_SUFFIX = "default";
const DEFAULT_DETECTION_DIRECTION = "ltr";
const DEFAULT_BASE_URL = "";
const RESOLVED_PREFIXED = /* @__PURE__ */ new Set([STRATEGIES.PREFIX_AND_DEFAULT, STRATEGIES.PREFIX_EXCEPT_DEFAULT]);
function getRouteBaseName(givenRoute = useRoute(), { router = useRouter(), routesNameSeparator = DEFAULT_ROUTES_NAME_SEPARATOR } = {}) {
const _routesNameSeparator = routesNameSeparator || router.__routesNameSeparator;
const _route = unref(givenRoute);
if (!_route.name) {
return null;
}
const name = getRouteName(_route.name);
return name.split(_routesNameSeparator)[0];
}
function localePath(route, locale, options) {
const localizedRoute = resolveRoute(route, locale, options);
return localizedRoute == null ? "" : isVue3 ? localizedRoute.redirectedFrom || localizedRoute.fullPath : localizedRoute.route.redirectedFrom || localizedRoute.route.fullPath;
}
function localeRoute(route, locale, options) {
const resolved = resolveRoute(route, locale, options);
return resolved == null ? void 0 : isVue3 ? resolved : resolved.route;
}
function localeLocation(route, locale, options) {
const resolved = resolveRoute(route, locale, options);
return resolved == null ? void 0 : isVue3 ? resolved : resolved.location;
}
function resolveRoute(route, locale, {
router = useRouter(),
i18n = useI18n(),
defaultLocale = DEFAULT_LOCALE,
defaultLocaleRouteNameSuffix = DEFAULT_LOCALE_ROUTE_NAME_SUFFIX,
routesNameSeparator = DEFAULT_ROUTES_NAME_SEPARATOR,
strategy = DEFAULT_STRATEGY,
trailingSlash = false
} = {}) {
const _defaultLocaleRouteNameSuffix = router.__defaultLocaleRouteNameSuffix || defaultLocaleRouteNameSuffix;
const _defaultLocale = router.__defaultLocale || defaultLocale;
const _routesNameSeparator = router.__routesNameSeparator || routesNameSeparator;
const _strategy = router.__strategy || strategy;
const _locale = locale || getLocale(i18n);
let _route = route;
if (isString(route)) {
if (_route[0] === "/") {
_route = { path: route };
} else {
_route = { name: route };
}
}
let localizedRoute = assign({}, _route);
if (localizedRoute.path && !localizedRoute.name) {
const _resolvedRoute = router.resolve(localizedRoute);
const resolvedRoute2 = isVue3 ? _resolvedRoute : _resolvedRoute.route;
const resolvedRouteName = getRouteBaseName(resolvedRoute2);
if (isString(resolvedRouteName)) {
localizedRoute = {
name: getLocaleRouteName(resolvedRouteName, _locale, {
defaultLocale: _defaultLocale,
strategy: _strategy,
routesNameSeparator: _routesNameSeparator,
defaultLocaleRouteNameSuffix: _defaultLocaleRouteNameSuffix
}),
params: resolvedRoute2.params,
query: resolvedRoute2.query,
hash: resolvedRoute2.hash
};
} else {
const isDefaultLocale = _locale === defaultLocale;
const isPrefixed = !(isDefaultLocale && RESOLVED_PREFIXED.has(_strategy)) && !(_strategy === STRATEGIES.NO_PREFIX);
if (isPrefixed) {
localizedRoute.path = `/${_locale}${localizedRoute.path}`;
}
localizedRoute.path = trailingSlash ? withTrailingSlash(localizedRoute.path, true) : withoutTrailingSlash(localizedRoute.path, true);
}
} else {
localizedRoute.name = getLocaleRouteName(localizedRoute.name, _locale, {
defaultLocale: _defaultLocale,
strategy: _strategy,
routesNameSeparator: _routesNameSeparator,
defaultLocaleRouteNameSuffix: _defaultLocaleRouteNameSuffix
});
const { params } = localizedRoute;
if (params && params["0"] === void 0 && params.pathMatch) {
params["0"] = params.pathMatch;
}
}
const resolvedRoute = router.resolve(localizedRoute);
if (isVue3 ? resolvedRoute.name : resolvedRoute.route.name) {
return resolvedRoute;
}
return router.resolve(route);
}
function switchLocalePath(locale, options) {
const route = options && options.route || useRoute();
const name = getRouteBaseName(route, options);
if (!name) {
return "";
}
const _a = !isVue3 && isRef(route) ? route.value : route, { params } = _a, routeCopy = __objRest(_a, ["params"]);
const langSwitchParams = {};
const baseRoute = assign({}, routeCopy, {
name,
params: __spreadProps(__spreadValues(__spreadValues({}, params), langSwitchParams), {
0: params.pathMatch
})
});
const path = localePath(baseRoute, locale, options);
return path;
}
function useI18nHead({
addDirAttribute = false,
addSeoAttributes = false,
strategy = DEFAULT_STRATEGY,
defaultLocale = DEFAULT_LOCALE,
route = useRoute(),
router = useRouter(),
i18n = useI18n()
} = {}) {
const _router = router;
const _defaultLocale = defaultLocale || _router.__defaultLocale;
const _strategy = strategy || _router.__strategy;
const metaObject = ref({
htmlAttrs: {},
link: [],
meta: []
});
function cleanMeta() {
metaObject.value = {
htmlAttrs: {},
link: [],
meta: []
};
}
function updateMeta(_route) {
if (i18n.locales == null || i18n.__baseUrl == null) {
return;
}
const locale = getLocale(i18n);
const currentLocale = getNormalizedLocales(i18n.locales.value).find((l) => l.code === locale) || {
code: locale
};
const currentLocaleIso = currentLocale.iso;
const currentLocaleDir = currentLocale.dir || router.__defaultDirection;
if (addDirAttribute) {
metaObject.value.htmlAttrs.dir = currentLocaleDir;
}
if (addSeoAttributes && locale && i18n.locales) {
if (currentLocaleIso) {
metaObject.value.htmlAttrs.lang = currentLocaleIso;
}
const locales = i18n.locales.value;
addHreflangLinks(locales, i18n.__baseUrl, metaObject.value.link, {
defaultLocale: _defaultLocale,
strategy: _strategy,
route,
router,
i18n
});
addCanonicalLinks(i18n.__baseUrl, metaObject.value.link, addSeoAttributes, { route: _route, router, i18n });
addCurrentOgLocale(currentLocale, currentLocaleIso, metaObject.value.meta);
addAlternateOgLocales(locales, currentLocaleIso, metaObject.value.meta);
}
}
if (inBrowser) {
if (isVue3) {
const stop = watchEffect(() => {
cleanMeta();
updateMeta(toRawRoute(_router.currentRoute));
});
onUnmounted(() => stop());
} else {
const handler = _router.afterEach((to, from) => {
cleanMeta();
updateMeta(to);
});
onUnmounted(() => handler());
updateMeta(route);
}
} else {
updateMeta(toRawRoute(_router.currentRoute));
}
return metaObject;
}
function addHreflangLinks(locales, baseUrl, link, options) {
if (options.strategy === STRATEGIES.NO_PREFIX) {
return;
}
const localeMap = /* @__PURE__ */ new Map();
for (const locale of locales) {
const localeIso = locale.iso;
if (!localeIso) {
warn("Locale ISO code is required to generate alternate link");
continue;
}
const [language, region] = localeIso.split("-");
if (language && region && (locale.isCatchallLocale || !localeMap.has(language))) {
localeMap.set(language, locale);
}
localeMap.set(localeIso, locale);
}
for (const [iso, mapLocale] of localeMap.entries()) {
const localePath2 = switchLocalePath(mapLocale.code, options);
if (localePath2) {
link.push({
hid: `i18n-alt-${iso}`,
rel: "alternate",
href: toAbsoluteUrl(localePath2, baseUrl),
hreflang: iso
});
}
}
if (options.defaultLocale) {
const localePath2 = switchLocalePath(options.defaultLocale, options);
if (localePath2) {
link.push({
hid: "i18n-xd",
rel: "alternate",
href: toAbsoluteUrl(localePath2, baseUrl),
hreflang: "x-default"
});
}
}
}
function addCanonicalLinks(baseUrl, link, seoAttributesOptions, options) {
const { route } = options;
const currentRoute = localeRoute(__spreadProps(__spreadValues({}, route), {
name: getRouteBaseName(route, options)
}), void 0, options);
if (currentRoute) {
let href = toAbsoluteUrl(currentRoute.path, baseUrl);
const canonicalQueries = !isBoolean(seoAttributesOptions) && seoAttributesOptions.canonicalQueries || [];
if (canonicalQueries.length) {
const currentRouteQueryParams = currentRoute.query;
const params = new URLSearchParams();
for (const queryParamName of canonicalQueries) {
if (queryParamName in currentRouteQueryParams) {
const queryParamValue = currentRouteQueryParams[queryParamName];
if (isArray(queryParamValue)) {
queryParamValue.forEach((v) => params.append(queryParamName, v || ""));
} else {
params.append(queryParamName, queryParamValue || "");
}
}
}
const queryString = params.toString();
if (queryString) {
href = `${href}?${queryString}`;
}
}
link.push({
hid: "i18n-can",
rel: "canonical",
href
});
}
}
function addCurrentOgLocale(currentLocale, currentLocaleIso, meta) {
const hasCurrentLocaleAndIso = currentLocale && currentLocaleIso;
if (!hasCurrentLocaleAndIso) {
return;
}
meta.push({
hid: "i18n-og",
property: "og:locale",
content: hypenToUnderscore(currentLocaleIso)
});
}
function addAlternateOgLocales(locales, currentLocaleIso, meta) {
const localesWithoutCurrent = locales.filter((locale) => {
const localeIso = locale.iso;
return localeIso && localeIso !== currentLocaleIso;
});
if (localesWithoutCurrent.length) {
const alternateLocales = localesWithoutCurrent.map((locale) => ({
hid: `i18n-og-alt-${locale.iso}`,
property: "og:locale:alternate",
content: hypenToUnderscore(locale.iso)
}));
meta.push(...alternateLocales);
}
}
function hypenToUnderscore(str) {
return (str || "").replace(/-/g, "_");
}
function toAbsoluteUrl(urlOrPath, baseUrl) {
if (urlOrPath.match(/^https?:\/\//)) {
return urlOrPath;
}
return baseUrl + urlOrPath;
}
function localizeRoutes(routes, {

@@ -198,2 +490,3 @@ defaultLocale = DEFAULT_LOCALE,

includeUprefixedFallback = false,
optionsResolver = void 0,
locales = []

@@ -209,2 +502,9 @@ } = {}) {

}
let routeOptions = null;
if (optionsResolver != null) {
routeOptions = optionsResolver(route, allowedLocaleCodes);
if (routeOptions == null) {
return [route];
}
}
const targetLocales = allowedLocaleCodes;

@@ -257,3 +557,3 @@ return targetLocales.reduce((_routes, locale) => {

}
function extendI18n(i18n, { locales = [] } = {}) {
function extendI18n(i18n, { locales = [], localeCodes = [], baseUrl = DEFAULT_BASE_URL } = {}) {
if (!isComposer(i18n.global, i18n.mode)) {

@@ -263,42 +563,7 @@ throw new Error("TODO:");

const _locales = ref(locales);
const _localeCodes = ref(localeCodes);
i18n.global.locales = computed(() => _locales.value);
console.log("... extends i18n done");
i18n.global.localeCodes = computed(() => _localeCodes.value);
i18n.global.__baseUrl = resolveBaseUrl(baseUrl, {});
}
function getLocalesRegex(localeCodes) {
return new RegExp(`^/(${localeCodes.join("|")})(?:/|$)`, "i");
}
function createLocaleFromRouteGetter(localeCodes, routesNameSeparator, defaultLocaleRouteNameSuffix) {
const localesPattern = `(${localeCodes.join("|")})`;
const defaultSuffixPattern = `(?:${routesNameSeparator}${defaultLocaleRouteNameSuffix})?`;
const regexpName = new RegExp(`${routesNameSeparator}${localesPattern}${defaultSuffixPattern}$`, "i");
const regexpPath = getLocalesRegex(localeCodes);
const getLocaleFromRoute = (route) => {
if (route.name) {
const name = isString(route.name) ? route.name : route.name.toString();
const matches = name.match(regexpName);
if (matches && matches.length > 1) {
return matches[1];
}
} else if (route.path) {
const matches = route.path.match(regexpPath);
if (matches && matches.length > 1) {
return matches[1];
}
}
return "";
};
return getLocaleFromRoute;
}
function asDefaultVueI18nRouterOptions(options) {
var _a, _b, _c, _d, _e, _f, _g, _h;
options.version = (_a = options.version) != null ? _a : 4;
options.defaultLocale = (_b = options.defaultLocale) != null ? _b : DEFAULT_LOCALE;
options.strategy = (_c = options.strategy) != null ? _c : DEFAULT_STRATEGY;
options.trailingSlash = (_d = options.trailingSlash) != null ? _d : DEFAULT_TRAILING_SLASH;
options.routesNameSeparator = (_e = options.routesNameSeparator) != null ? _e : DEFAULT_ROUTES_NAME_SEPARATOR;
options.defaultLocaleRouteNameSuffix = (_f = options.defaultLocaleRouteNameSuffix) != null ? _f : DEFAULT_LOCALE_ROUTE_NAME_SUFFIX;
options.locales = (_g = options.locales) != null ? _g : [];
options.routes = (_h = options.routes) != null ? _h : [];
return options;
}
function createRouter(i18n, options = {}) {

@@ -313,3 +578,6 @@ const {

defaultLocaleRouteNameSuffix,
routes
defaultDirection,
baseUrl,
routes,
routeOptionsResolver: optionsResolver
} = asDefaultVueI18nRouterOptions(options);

@@ -319,3 +587,3 @@ const normalizedLocaleCodes = getNormalizedLocales(locales);

const getLocaleFromRoute = createLocaleFromRouteGetter(localeCodes, routesNameSeparator, defaultLocaleRouteNameSuffix);
extendI18n(i18n, { locales: normalizedLocaleCodes });
extendI18n(i18n, { locales: normalizedLocaleCodes, baseUrl, localeCodes });
const localizedRoutes = localizeRoutes(routes, {

@@ -327,13 +595,7 @@ locales,

routesNameSeparator,
defaultLocaleRouteNameSuffix
defaultLocaleRouteNameSuffix,
optionsResolver
});
options.routes = localizedRoutes;
let router = null;
if (isVue3 && version === 4) {
router = createRouter$1(options);
} else if (isVue2 && version === 3) {
router = new VueRouter3(options);
} else {
throw new Error("TODO:");
}
const router = createVueRouter(options, version);
router.__defaultLocale = defaultLocale;

@@ -345,7 +607,6 @@ router.__localeCodes = localeCodes;

router.__defaultLocaleRouteNameSuffix = defaultLocaleRouteNameSuffix;
router.__defaultDirection = defaultDirection;
router.beforeEach((to, from, next) => {
console.log("beforeEach", to, from);
const currentLocale = getLocale(i18n);
const finalLocale = getLocaleFromRoute(to) || currentLocale || defaultLocale || "";
console.log("currentLocale", currentLocale, "finalLocale", finalLocale);
if (currentLocale !== finalLocale) {

@@ -356,6 +617,60 @@ setLocale(i18n, finalLocale);

});
console.log("create router", router);
return router;
}
const VERSION = "";
export { VERSION, createRouter, localizeRoutes, useI18nRouting };
function createVueRouter(options, version) {
if (isVue3 && version === 4) {
return createRouter$1(options);
} else if (isVue2 && version === 3) {
return new VueRouter3(options);
} else {
throw new Error("TODO:");
}
}
function getLocalesRegex(localeCodes) {
return new RegExp(`^/(${localeCodes.join("|")})(?:/|$)`, "i");
}
function createLocaleFromRouteGetter(localeCodes, routesNameSeparator, defaultLocaleRouteNameSuffix) {
const localesPattern = `(${localeCodes.join("|")})`;
const defaultSuffixPattern = `(?:${routesNameSeparator}${defaultLocaleRouteNameSuffix})?`;
const regexpName = new RegExp(`${routesNameSeparator}${localesPattern}${defaultSuffixPattern}$`, "i");
const regexpPath = getLocalesRegex(localeCodes);
const getLocaleFromRoute = (route) => {
if (isObject(route)) {
if (route.name) {
const name = isString(route.name) ? route.name : route.name.toString();
const matches = name.match(regexpName);
if (matches && matches.length > 1) {
return matches[1];
}
} else if (route.path) {
const matches = route.path.match(regexpPath);
if (matches && matches.length > 1) {
return matches[1];
}
}
} else if (isString(route)) {
const matches = route.match(regexpPath);
if (matches && matches.length > 1) {
return matches[1];
}
}
return "";
};
return getLocaleFromRoute;
}
function asDefaultVueI18nRouterOptions(options) {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
options.version = (_a = options.version) != null ? _a : 4;
options.defaultLocale = (_b = options.defaultLocale) != null ? _b : DEFAULT_LOCALE;
options.strategy = (_c = options.strategy) != null ? _c : DEFAULT_STRATEGY;
options.trailingSlash = (_d = options.trailingSlash) != null ? _d : DEFAULT_TRAILING_SLASH;
options.routesNameSeparator = (_e = options.routesNameSeparator) != null ? _e : DEFAULT_ROUTES_NAME_SEPARATOR;
options.defaultLocaleRouteNameSuffix = (_f = options.defaultLocaleRouteNameSuffix) != null ? _f : DEFAULT_LOCALE_ROUTE_NAME_SUFFIX;
options.locales = (_g = options.locales) != null ? _g : [];
options.defaultDirection = (_h = options.defaultDirection) != null ? _h : DEFAULT_DETECTION_DIRECTION;
options.baseUrl = (_i = options.baseUrl) != null ? _i : DEFAULT_BASE_URL;
options.routes = (_j = options.routes) != null ? _j : [];
return options;
}
const VERSION = "0.0.0";
export { VERSION, createLocaleFromRouteGetter, createRouter, findBrowserLocale, getLocale, getRouteBaseName, localeLocation, localePath, localeRoute, localizeRoutes, resolveBaseUrl, setLocale, switchLocalePath, useI18nHead };

@@ -1,5 +0,5 @@

var ue=Object.defineProperty,se=Object.defineProperties;var fe=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var D=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var k=(r,t,f)=>t in r?ue(r,t,{enumerable:!0,configurable:!0,writable:!0,value:f}):r[t]=f,P=(r,t)=>{for(var f in t||(t={}))D.call(t,f)&&k(r,f,t[f]);if(b)for(var f of b(t))W.call(t,f)&&k(r,f,t[f]);return r},v=(r,t)=>se(r,fe(t));var B=(r,t)=>{var f={};for(var p in r)D.call(r,p)&&t.indexOf(p)<0&&(f[p]=r[p]);if(r!=null&&b)for(var p of b(r))t.indexOf(p)<0&&W.call(r,p)&&(f[p]=r[p]);return f};var VueI18nRouting=function(r,t,f,p){"use strict";function H(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var Y=H(f);/*!
* shared v9.2.0-beta.26
* (c) 2021 kazuya kawaguchi
var ke=Object.defineProperty,qe=Object.defineProperties;var Ge=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var ue=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var se=(s,r,L)=>r in s?ke(s,r,{enumerable:!0,configurable:!0,writable:!0,value:L}):s[r]=L,N=(s,r)=>{for(var L in r||(r={}))ue.call(r,L)&&se(s,L,r[L]);if(x)for(var L of x(r))fe.call(r,L)&&se(s,L,r[L]);return s},X=(s,r)=>qe(s,Ge(r));var ie=(s,r)=>{var L={};for(var p in s)ue.call(s,p)&&r.indexOf(p)<0&&(L[p]=s[p]);if(s!=null&&x)for(var p of x(s))r.indexOf(p)<0&&fe.call(s,p)&&(L[p]=s[p]);return L};var VueI18nRouting=function(s,r,L,p){"use strict";function de(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var he=de(L);/*!
* shared v9.2.0-beta.30
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/const V=Object.assign,I=e=>typeof e=="string",J=e=>typeof e=="symbol";function K(e){e=e||[];const l=[];for(const c of e)I(c)?l.push({code:c}):l.push(c);return l}function y(e,l){return t.isRef(e.locale)&&l==="composition"}function U(e){return"global"in e&&"mode"in e}function w(e){return U(e)?y(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function Q(e,l){U(e)?y(e.global,e.mode)?e.global.locale.value=l:e.global.locale=l:t.isRef(e.locale)&&(e.locale.value=l)}function Z(e,l,c){return e.replace(/\/+$/,"")+(l?"/":"")||(c?"":"/")}function ee(e={}){const l=p.useI18n(),c=f.useRouter(),_=f.useRoute(),m=e.defaultLocaleRouteNameSuffix||c.__defaultLocaleRouteNameSuffix,E=e.defaultLocale||c.__defaultLocale,g=e.routesNameSeparator||c.__routesNameSeparator,S=e.strategy||c.__strategy;function i(a){const u=a!=null?a:t.isRef(_)?_.value:_;return u.name?z(u.name).split(g)[0]:void 0}function L(a,u){let o=z(a)+(S==="no_prefix"?"":g+u);return u===E&&S==="prefix_and_default"&&(o+=g+m),o}function n(a,u){const o=u||w(l);let d=a;I(a)&&(a[0]==="/"?d={path:a}:d={name:a});let s=V({},d);if(s.path&&!s.name){const R=c.resolve(s),$=t.isVue2?R.route:R,F=i($);I(F)&&(s={name:L(F,o),params:$.params,query:$.query,hash:$.hash})}else{s.name=L(s.name,o);const{params:R}=s;R&&R["0"]===void 0&&R.pathMatch&&(R["0"]=R.pathMatch)}const x=c.resolve(s);return(t.isVue2?x.route.name:x.name)?x:c.resolve(a)}function T(a,u){const o=n(a,u);return o==null?"":t.isVue2?o.route.redirectedFrom||o.route.fullPath:o.redirectedFrom||o.fullPath}function A(a,u){const o=n(a,u);return o==null?void 0:t.isVue2?o.route:o}function N(a,u){const o=n(a,u);return o==null?void 0:t.isVue2?o.location:o.href}function h(a){const u=i();if(!u)return"";const $=t.isVue2&&t.isRef(_)?_.value:_,{params:o}=$,d=B($,["params"]),s={},x=V({},d,{name:u,params:v(P(P({},o),s),{0:o.pathMatch})}),R=T(x,a);return console.log("switchLocalePath",l.locale.value,a,R),R}return{getRouteBaseName:i,localePath:T,localeRoute:A,localeLocation:N,switchLocalePath:h}}function z(e){return I(e)?e:J(e)?e.toString():"(null)"}const te={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},C="",X=te.PREFIX_EXCEPT_DEFAULT,M=!1,j="___",G="default";function q(e,{defaultLocale:l=C,strategy:c=X,trailingSlash:_=M,routesNameSeparator:m=j,defaultLocaleRouteNameSuffix:E=G,includeUprefixedFallback:g=!1,locales:S=[]}={}){if(c==="no_prefix")return e;const i=S.map(n=>I(n)?n:n.code);function L(n,T,A=!1,N=!1){return n.redirect&&(!n.component||!n.file)?[n]:T.reduce((a,u)=>{const{name:o}=n;let{path:d}=n;const s=P({},n);o&&(s.name=`${o}${m}${u}`),n.children&&(s.children=n.children.reduce((F,O)=>[...F,...L(O,[u],!0,N)],[]));const x=u===l;if(x&&c==="prefix_and_default")if(A)A&&N&&o&&(s.name+=`${m}${E}`);else{const F=v(P({},s),{path:d});if(o&&(F.name=`${s.name}${m}${E}`),n.children){F.children=[];for(const O of n.children)F.children=F.children.concat(L(O,[u],!0,!0))}a.push(F)}const R=A&&!d.startsWith("/"),$=!R&&!(x&&c==="prefix_except_default");return $&&(d=`/${u}${d}`),d&&(d=Z(d,_,R)),$&&x&&c==="prefix"&&g&&a.push(P({},n)),s.path=d,a.push(s),a},[])}return e.reduce((n,T)=>[...n,...L(T,i||[])],[])}function ae(e,{locales:l=[]}={}){if(!y(e.global,e.mode))throw new Error("TODO:");const c=t.ref(l);e.global.locales=t.computed(()=>c.value),console.log("... extends i18n done")}function oe(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function le(e,l,c){const _=`(${e.join("|")})`,m=`(?:${l}${c})?`,E=new RegExp(`${l}${_}${m}$`,"i"),g=oe(e);return i=>{if(i.name){const n=(I(i.name)?i.name:i.name.toString()).match(E);if(n&&n.length>1)return n[1]}else if(i.path){const L=i.path.match(g);if(L&&L.length>1)return L[1]}return""}}function ne(e){var l,c,_,m,E,g,S,i;return e.version=(l=e.version)!=null?l:4,e.defaultLocale=(c=e.defaultLocale)!=null?c:C,e.strategy=(_=e.strategy)!=null?_:X,e.trailingSlash=(m=e.trailingSlash)!=null?m:M,e.routesNameSeparator=(E=e.routesNameSeparator)!=null?E:j,e.defaultLocaleRouteNameSuffix=(g=e.defaultLocaleRouteNameSuffix)!=null?g:G,e.locales=(S=e.locales)!=null?S:[],e.routes=(i=e.routes)!=null?i:[],e}function ce(e,l={}){const{version:c,defaultLocale:_,locales:m,strategy:E,trailingSlash:g,routesNameSeparator:S,defaultLocaleRouteNameSuffix:i,routes:L}=ne(l),n=K(m),T=n.map(a=>a.code),A=le(T,S,i);ae(e,{locales:n});const N=q(L,{locales:m,defaultLocale:_,strategy:E,trailingSlash:g,routesNameSeparator:S,defaultLocaleRouteNameSuffix:i});l.routes=N;let h=null;if(t.isVue3&&c===4)h=f.createRouter(l);else if(t.isVue2&&c===3)h=new Y.default(l);else throw new Error("TODO:");return h.__defaultLocale=_,h.__localeCodes=T,h.__strategy=E,h.__trailingSlash=g,h.__routesNameSeparator=S,h.__defaultLocaleRouteNameSuffix=i,h.beforeEach((a,u,o)=>{console.log("beforeEach",a,u);const d=w(e),s=A(a)||d||_||"";console.log("currentLocale",d,"finalLocale",s),d!==s&&Q(e,s),o()}),console.log("create router",h),h}const re="";return r.VERSION=re,r.createRouter=ce,r.localizeRoutes=q,r.useI18nRouting=ee,Object.defineProperty(r,"__esModule",{value:!0}),r[Symbol.toStringTag]="Module",r}({},VueDemi,VueRouter,VueI18n);
*/const q=Object.assign,_e=Array.isArray,Le=e=>typeof e=="function",P=e=>typeof e=="string",ge=e=>typeof e=="boolean",me=e=>typeof e=="symbol",Re=e=>e!==null&&typeof e=="object",Ee=/\/$|\/\?/;function V(e="",t=!1){return t?Ee.test(e):e.endsWith("/")}function Se(e="",t=!1){if(!t)return(V(e)?e.slice(0,-1):e)||"/";if(!V(e,!0))return e||"/";const[a,...o]=e.split("?");return(a.slice(0,-1)||"/")+(o.length?`?${o.join("?")}`:"")}function pe(e="",t=!1){if(!t)return e.endsWith("/")?e:e+"/";if(V(e,!0))return e||"/";const[a,...o]=e.split("?");return a+"/"+(o.length?`?${o.join("?")}`:"")}const Ae=typeof window!="undefined";function Ie(e,t){typeof console!="undefined"&&(console.warn("[vue-i18n-routing] "+e),t&&console.warn(t.stack))}function G(e){e=e||[];const t=[];for(const a of e)P(a)?t.push({code:a}):t.push(a);return t}function B(e,t){return r.isRef(e.locale)&&t==="composition"}function H(e){return"global"in e&&"mode"in e}function U(e){return H(e)?B(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function W(e,t){H(e)?B(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:r.isRef(e.locale)&&(e.locale.value=t)}function Te(e,t,a){return e.replace(/\/+$/,"")+(t?"/":"")||(a?"":"/")}function Q(e){return L.isVueRouter4,r.isRef(e)?e.value:e}function Y(e){return P(e)?e:me(e)?e.toString():"(null)"}function J(e,t,{defaultLocale:a,strategy:o,routesNameSeparator:l,defaultLocaleRouteNameSuffix:n}){let c=Y(e)+(o==="no_prefix"?"":l+t);return t===a&&o==="prefix_and_default"&&(c+=l+n),c}function K(e,t){return Le(e)?e(t):e}function Fe(e,t){const a=[];for(const[o,l]of t.entries()){const n=e.find(c=>c.iso.toLowerCase()===l.toLowerCase());if(n){a.push({code:n.code,score:1-o/t.length});break}}for(const[o,l]of t.entries()){const n=l.split("-")[0].toLowerCase(),c=e.find(u=>u.iso.split("-")[0].toLowerCase()===n);if(c){a.push({code:c.code,score:.999-o/t.length});break}}return a}const Pe=Fe;function we(e,t){return e.score===t.score?t.code.length-e.code.length:t.score-e.score}const Ne=we;function ye(e,t,{matcher:a=Pe,comparer:o=Ne}={}){const l=[];for(const c of e){const{code:u}=c,i=c.iso||u;l.push({code:u,iso:i})}const n=a(l,t);return n.length>1&&n.sort(o),n.length?n[0].code:""}const $={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},C="",O=$.PREFIX_EXCEPT_DEFAULT,Z=!1,b="___",D="default",$e="ltr",ee="",Ue=new Set([$.PREFIX_AND_DEFAULT,$.PREFIX_EXCEPT_DEFAULT]);function v(e=L.useRoute(),{router:t=L.useRouter(),routesNameSeparator:a=b}={}){const o=a||t.__routesNameSeparator,l=r.unref(e);return l.name?Y(l.name).split(o)[0]:null}function te(e,t,a){const o=M(e,t,a);return o==null?"":r.isVue3?o.redirectedFrom||o.fullPath:o.route.redirectedFrom||o.route.fullPath}function ae(e,t,a){const o=M(e,t,a);return o==null?void 0:r.isVue3?o:o.route}function Ce(e,t,a){const o=M(e,t,a);return o==null?void 0:r.isVue3?o:o.location}function M(e,t,{router:a=L.useRouter(),i18n:o=p.useI18n(),defaultLocale:l=C,defaultLocaleRouteNameSuffix:n=D,routesNameSeparator:c=b,strategy:u=O,trailingSlash:i=!1}={}){const d=a.__defaultLocaleRouteNameSuffix||n,h=a.__defaultLocale||l,f=a.__routesNameSeparator||c,m=a.__strategy||u,R=t||U(o);let S=e;P(e)&&(S[0]==="/"?S={path:e}:S={name:e});let g=q({},S);if(g.path&&!g.name){const _=a.resolve(g),E=r.isVue3?_:_.route,F=v(E);P(F)?g={name:J(F,R,{defaultLocale:h,strategy:m,routesNameSeparator:f,defaultLocaleRouteNameSuffix:d}),params:E.params,query:E.query,hash:E.hash}:(!(R===l&&Ue.has(m))&&m!==$.NO_PREFIX&&(g.path=`/${R}${g.path}`),g.path=i?pe(g.path,!0):Se(g.path,!0))}else{g.name=J(g.name,R,{defaultLocale:h,strategy:m,routesNameSeparator:f,defaultLocaleRouteNameSuffix:d});const{params:_}=g;_&&_["0"]===void 0&&_.pathMatch&&(_["0"]=_.pathMatch)}const A=a.resolve(g);return(r.isVue3?A.name:A.route.name)?A:a.resolve(e)}function j(e,t){const a=t&&t.route||L.useRoute(),o=v(a,t);if(!o)return"";const d=!r.isVue3&&r.isRef(a)?a.value:a,{params:l}=d,n=ie(d,["params"]),c={},u=q({},n,{name:o,params:X(N(N({},l),c),{0:l.pathMatch})});return te(u,e,t)}function Oe({addDirAttribute:e=!1,addSeoAttributes:t=!1,strategy:a=O,defaultLocale:o=C,route:l=L.useRoute(),router:n=L.useRouter(),i18n:c=p.useI18n()}={}){const u=n,i=o||u.__defaultLocale,d=a||u.__strategy,h=r.ref({htmlAttrs:{},link:[],meta:[]});function f(){h.value={htmlAttrs:{},link:[],meta:[]}}function m(R){if(c.locales==null||c.__baseUrl==null)return;const S=U(c),g=G(c.locales.value).find(E=>E.code===S)||{code:S},A=g.iso,_=g.dir||n.__defaultDirection;if(e&&(h.value.htmlAttrs.dir=_),t&&S&&c.locales){A&&(h.value.htmlAttrs.lang=A);const E=c.locales.value;be(E,c.__baseUrl,h.value.link,{defaultLocale:i,strategy:d,route:l,router:n,i18n:c}),ve(c.__baseUrl,h.value.link,t,{route:R,router:n,i18n:c}),xe(g,A,h.value.meta),Xe(E,A,h.value.meta)}}if(Ae)if(r.isVue3){const R=r.watchEffect(()=>{f(),m(Q(u.currentRoute))});r.onUnmounted(()=>R())}else{const R=u.afterEach((S,g)=>{f(),m(S)});r.onUnmounted(()=>R()),m(l)}else m(Q(u.currentRoute));return h}function be(e,t,a,o){if(o.strategy===$.NO_PREFIX)return;const l=new Map;for(const n of e){const c=n.iso;if(!c){Ie("Locale ISO code is required to generate alternate link");continue}const[u,i]=c.split("-");u&&i&&(n.isCatchallLocale||!l.has(u))&&l.set(u,n),l.set(c,n)}for(const[n,c]of l.entries()){const u=j(c.code,o);u&&a.push({hid:`i18n-alt-${n}`,rel:"alternate",href:z(u,t),hreflang:n})}if(o.defaultLocale){const n=j(o.defaultLocale,o);n&&a.push({hid:"i18n-xd",rel:"alternate",href:z(n,t),hreflang:"x-default"})}}function ve(e,t,a,o){const{route:l}=o,n=ae(X(N({},l),{name:v(l,o)}),void 0,o);if(n){let c=z(n.path,e);const u=!ge(a)&&a.canonicalQueries||[];if(u.length){const i=n.query,d=new URLSearchParams;for(const f of u)if(f in i){const m=i[f];_e(m)?m.forEach(R=>d.append(f,R||"")):d.append(f,m||"")}const h=d.toString();h&&(c=`${c}?${h}`)}t.push({hid:"i18n-can",rel:"canonical",href:c})}}function xe(e,t,a){!(e&&t)||a.push({hid:"i18n-og",property:"og:locale",content:oe(t)})}function Xe(e,t,a){const o=e.filter(l=>{const n=l.iso;return n&&n!==t});if(o.length){const l=o.map(n=>({hid:`i18n-og-alt-${n.iso}`,property:"og:locale:alternate",content:oe(n.iso)}));a.push(...l)}}function oe(e){return(e||"").replace(/-/g,"_")}function z(e,t){return e.match(/^https?:\/\//)?e:t+e}function ne(e,{defaultLocale:t=C,strategy:a=O,trailingSlash:o=Z,routesNameSeparator:l=b,defaultLocaleRouteNameSuffix:n=D,includeUprefixedFallback:c=!1,optionsResolver:u=void 0,locales:i=[]}={}){if(a==="no_prefix")return e;const d=i.map(f=>P(f)?f:f.code);function h(f,m,R=!1,S=!1){if(f.redirect&&(!f.component||!f.file))return[f];let g=null;return u!=null&&(g=u(f,m),g==null)?[f]:m.reduce((_,E)=>{const{name:F}=f;let{path:I}=f;const T=N({},f);F&&(T.name=`${F}${l}${E}`),f.children&&(T.children=f.children.reduce((w,k)=>[...w,...h(k,[E],!0,S)],[]));const y=E===t;if(y&&a==="prefix_and_default")if(R)R&&S&&F&&(T.name+=`${l}${n}`);else{const w=X(N({},T),{path:I});if(F&&(w.name=`${T.name}${l}${n}`),f.children){w.children=[];for(const k of f.children)w.children=w.children.concat(h(k,[E],!0,!0))}_.push(w)}const ce=R&&!I.startsWith("/"),re=!ce&&!(y&&a==="prefix_except_default");return re&&(I=`/${E}${I}`),I&&(I=Te(I,o,ce)),re&&y&&a==="prefix"&&c&&_.push(N({},f)),T.path=I,_.push(T),_},[])}return e.reduce((f,m)=>[...f,...h(m,d||[])],[])}function Ve(e,{locales:t=[],localeCodes:a=[],baseUrl:o=ee}={}){if(!B(e.global,e.mode))throw new Error("TODO:");const l=r.ref(t),n=r.ref(a);e.global.locales=r.computed(()=>l.value),e.global.localeCodes=r.computed(()=>n.value),e.global.__baseUrl=K(o,{})}function Be(e,t={}){const{version:a,defaultLocale:o,locales:l,strategy:n,trailingSlash:c,routesNameSeparator:u,defaultLocaleRouteNameSuffix:i,defaultDirection:d,baseUrl:h,routes:f,routeOptionsResolver:m}=je(t),R=G(l),S=R.map(E=>E.code),g=le(S,u,i);Ve(e,{locales:R,baseUrl:h,localeCodes:S});const A=ne(f,{locales:l,defaultLocale:o,strategy:n,trailingSlash:c,routesNameSeparator:u,defaultLocaleRouteNameSuffix:i,optionsResolver:m});t.routes=A;const _=De(t,a);return _.__defaultLocale=o,_.__localeCodes=S,_.__strategy=n,_.__trailingSlash=c,_.__routesNameSeparator=u,_.__defaultLocaleRouteNameSuffix=i,_.__defaultDirection=d,_.beforeEach((E,F,I)=>{const T=U(e),y=g(E)||T||o||"";T!==y&&W(e,y),I()}),_}function De(e,t){if(r.isVue3&&t===4)return L.createRouter(e);if(r.isVue2&&t===3)return new he.default(e);throw new Error("TODO:")}function Me(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function le(e,t,a){const o=`(${e.join("|")})`,l=`(?:${t}${a})?`,n=new RegExp(`${t}${o}${l}$`,"i"),c=Me(e);return i=>{if(Re(i)){if(i.name){const h=(P(i.name)?i.name:i.name.toString()).match(n);if(h&&h.length>1)return h[1]}else if(i.path){const d=i.path.match(c);if(d&&d.length>1)return d[1]}}else if(P(i)){const d=i.match(c);if(d&&d.length>1)return d[1]}return""}}function je(e){var t,a,o,l,n,c,u,i,d,h;return e.version=(t=e.version)!=null?t:4,e.defaultLocale=(a=e.defaultLocale)!=null?a:C,e.strategy=(o=e.strategy)!=null?o:O,e.trailingSlash=(l=e.trailingSlash)!=null?l:Z,e.routesNameSeparator=(n=e.routesNameSeparator)!=null?n:b,e.defaultLocaleRouteNameSuffix=(c=e.defaultLocaleRouteNameSuffix)!=null?c:D,e.locales=(u=e.locales)!=null?u:[],e.defaultDirection=(i=e.defaultDirection)!=null?i:$e,e.baseUrl=(d=e.baseUrl)!=null?d:ee,e.routes=(h=e.routes)!=null?h:[],e}const ze="0.0.0";return s.VERSION=ze,s.createLocaleFromRouteGetter=le,s.createRouter=Be,s.findBrowserLocale=ye,s.getLocale=U,s.getRouteBaseName=v,s.localeLocation=Ce,s.localePath=te,s.localeRoute=ae,s.localizeRoutes=ne,s.resolveBaseUrl=K,s.setLocale=W,s.switchLocalePath=j,s.useI18nHead=Oe,Object.defineProperty(s,"__esModule",{value:!0}),s[Symbol.toStringTag]="Module",s}({},VueDemi,VueRouter,VueI18n);
{
"name": "vue-i18n-routing",
"description": "The i18n routing with using vue-i18n",
"version": "0.0.0-15c1118",
"version": "0.0.0-190b377",
"dependencies": {
"@intlify/shared": "beta",
"@intlify/vue-i18n-bridge": "^0.3.4",
"@intlify/vue-router-bridge": "^0.3.4",
"@intlify/vue-i18n-bridge": "^0.3.5",
"@intlify/vue-router-bridge": "^0.3.5",
"ufo": "^0.7.9",
"vue-demi": "^0.12.1"

@@ -13,13 +14,16 @@ },

"@microsoft/api-extractor": "^7.18.20",
"@vue/test-utils": "^1.3.0",
"api-docs-gen": "^0.4.0",
"rimraf": "^3.0.2",
"typescript": "^4.5.4",
"vite": "^2.7.4",
"vite": "latest",
"vite-plugin-dts": "^0.9.6",
"vitest": "^0.2.8",
"vue": "^3.2.23",
"vue-i18n": "npm:vue-i18n@next",
"vue-i18n-bridge": "beta",
"vue-i18n-legacy": "npm:vue-i18n@latest",
"vue-i18n-legacy": "npm:vue-i18n@8",
"vue-router": "^4.0.12",
"vue-router3": "npm:vue-router@latest",
"vue-router3": "npm:vue-router@3",
"vue-template-compiler": "^2.6.14",
"vue2": "npm:vue@2"

@@ -30,4 +34,4 @@ },

"vue": "^2.6.14 || ^3.2.0",
"vue-i18n": "^8.26.1 || ^9.2.0-beta.25",
"vue-i18n-bridge": "^9.2.0-beta.25",
"vue-i18n": "^8.26.1 || ^9.2.0-beta.30",
"vue-i18n-bridge": "^9.2.0-beta.30",
"vue-router": "^3.5.3 || ^4.0.0"

@@ -63,4 +67,7 @@ },

},
"require": "./dist/vue-i18n-routing.cjs.js"
}
"require": "./dist/vue-i18n-routing.cjs.js",
"types": "./dist/vue-i18n-routing.d.ts"
},
"./dist/*": "./dist/*",
"./package.json": "./package.json"
},

@@ -92,4 +99,7 @@ "license": "MIT",

"typecheck": "tsc -p . --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:cover": "vitest --coverage",
"build:docs": "api-docs-gen ./temp/vue-i18n-routing.api.json -c ./docsgen.config.js -o ./ -g noprefix"
}
}

Sorry, the diff of this file is not supported yet