vue-i18n-routing
Advanced tools
Comparing version 0.0.0-2adf43f to 0.0.0-33d6652
@@ -1,5 +0,5 @@ | ||
"use strict";var ne=Object.defineProperty,le=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var F=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var G=(e,t,a)=>t in e?ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,A=(e,t)=>{for(var a in t||(t={}))k.call(t,a)&&G(e,a,t[a]);if(F)for(var a of F(t))B.call(t,a)&&G(e,a,t[a]);return e},x=(e,t)=>le(e,ce(t));var H=(e,t)=>{var a={};for(var o in e)k.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&F)for(var o of F(e))t.indexOf(o)<0&&B.call(e,o)&&(a[o]=e[o]);return a};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var R=require("vue-demi"),S=require("@intlify/vue-router-bridge"),C=require("@intlify/vue-i18n-bridge");function re(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var se=re(S);/*! | ||
* shared v9.2.0-beta.28 | ||
"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 W=Object.assign,ue=Array.isArray,ie=e=>typeof e=="function",P=e=>typeof e=="string",fe=e=>typeof e=="boolean",de=e=>typeof e=="symbol",he=/\/$|\/\?/;function V(e="",t=!1){return t?he.test(e):e.endsWith("/")}function _e(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 me(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("?")}`:"")}function ge(e,t){typeof console!="undefined"&&(console.warn("[vue-i18n-routing] "+e),t&&console.warn(t.stack))}function Re(e){e=e||[];const t=[];for(const a of e)P(a)?t.push({code:a}):t.push(a);return t}function X(e,t){return R.isRef(e.locale)&&t==="composition"}function Q(e){return"global"in e&&"mode"in e}function N(e){return Q(e)?X(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function Le(e,t){Q(e)?X(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:R.isRef(e.locale)&&(e.locale.value=t)}function Ee(e,t,a){return e.replace(/\/+$/,"")+(t?"/":"")||(a?"":"/")}function Y(e){return P(e)?e:de(e)?e.toString():"(null)"}function J(e,t,{defaultLocale:a,strategy:o,routesNameSeparator:c,defaultLocaleRouteNameSuffix:n}){let r=Y(e)+(o==="no_prefix"?"":c+t);return t===a&&o==="prefix_and_default"&&(r+=c+n),r}function pe(e,t){return ie(e)?e(t):e}const D={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},$="",b=D.PREFIX_EXCEPT_DEFAULT,K=!1,U="___",q="default",Se="ltr",Z="";function O(e=S.useRoute(),t=S.useRouter().__routesNameSeparator||U){const a=R.unref(e);return a.name?Y(a.name).split(t)[0]:null}const ve=new Set([D.PREFIX_AND_DEFAULT,D.PREFIX_EXCEPT_DEFAULT]);function ee(e,t,a){const o=z(e,t,a);return o==null?"":R.isVue3?o.redirectedFrom||o.fullPath:o.route.redirectedFrom||o.route.fullPath}function te(e,t,a){const o=z(e,t,a);return o==null?void 0:R.isVue3?o:o.route}function Ae(e,t,a){const o=z(e,t,a);return o==null?void 0:R.isVue3?o:o.location}function z(e,t,{router:a=S.useRouter(),i18n:o=C.useI18n(),defaultLocale:c=$,defaultLocaleRouteNameSuffix:n=q,routesNameSeparator:r=U,strategy:i=b,trailingSlash:f=!1}={}){const s=a.__defaultLocaleRouteNameSuffix||n,l=a.__defaultLocale||c,m=a.__routesNameSeparator||r,d=a.__strategy||i,g=t||N(o);let L=e;P(e)&&(L[0]==="/"?L={path:e}:L={name:e});let h=W({},L);if(h.path&&!h.name){const u=a.resolve(h),_=R.isVue3?u:u.route,p=O(_);P(p)?h={name:J(p,g,{defaultLocale:l,strategy:d,routesNameSeparator:m,defaultLocaleRouteNameSuffix:s}),params:_.params,query:_.query,hash:_.hash}:(!(g===c&&ve.has(d))&&d!==D.NO_PREFIX&&(h.path=`/${g}${h.path}`),h.path=f?me(h.path,!0):_e(h.path,!0))}else{h.name=J(h.name,g,{defaultLocale:l,strategy:d,routesNameSeparator:m,defaultLocaleRouteNameSuffix:s});const{params:u}=h;u&&u["0"]===void 0&&u.pathMatch&&(u["0"]=u.pathMatch)}const E=a.resolve(h);return(R.isVue3?E.name:E.route.name)?E:a.resolve(e)}function j(e,{route:t=S.useRoute(),i18n:a=C.useI18n()}={}){const o=O();if(!o)return"";const s=!R.isVue3&&R.isRef(t)?t.value:t,{params:c}=s,n=H(s,["params"]),r={},i=W({},n,{name:o,params:x(A(A({},c),r),{0:c.pathMatch})});return ee(i,e,{route:t,i18n:a})}function Ie({addDirAttribute:e=!1,addSeoAttributes:t=!1,strategy:a=b,defaultLocale:o=$,route:c=S.useRoute(),router:n=S.useRouter(),i18n:r=C.useI18n()}={}){const i=o||n.__defaultLocale,f=a||n.__strategy,s={htmlAttrs:{},link:[],meta:[]},l=N(r),m=n.__localeProperties||{code:l},d=m.iso,g=m.dir||n.__defaultDetection;if(e&&(s.htmlAttrs.dir=g),t&&l&&r.locales){d&&(s.htmlAttrs.lang=d);const L=r.locales.value;ye(L,r.__baseUrl,s.link,{defaultLocale:i,strategy:f,route:c,router:n,i18n:r}),Pe(r.__baseUrl,s.link,t,{route:c,router:n,i18n:r}),Te(m,d,s.meta),De(L,d,s.meta)}return s}function ye(e,t,a,o){if(o.strategy===D.NO_PREFIX)return;const c=new Map;for(const n of e){const r=n.iso;if(!r){ge("Locale ISO code is required to generate alternate link");continue}const[i,f]=r.split("-");i&&f&&(n.isCatchallLocale||!c.has(i))&&c.set(i,n),c.set(r,n)}for(const[n,r]of c.entries()){const i=j(r.code,o);i&&a.push({hid:`i18n-alt-${n}`,rel:"alternate",href:M(i,t),hreflang:n})}if(o.defaultLocale){const n=j(o.defaultLocale,o);n&&a.push({hid:"i18n-xd",rel:"alternate",href:M(n,t),hreflang:"x-default"})}}function Pe(e,t,a,o){const{route:c}=o,n=te(x(A({},c),{name:O()}),void 0,o);if(n){let r=M(n.path,e);const i=!fe(a)&&a.canonicalQueries||[];if(i.length){const f=n.query,s=new URLSearchParams;for(const m of i)if(m in f){const d=f[m];ue(d)?d.forEach(g=>s.append(m,g||"")):s.append(m,d||"")}const l=s.toString();l&&(r=`${r}?${l}`)}t.push({hid:"i18n-can",rel:"canonical",href:r})}}function Te(e,t,a){!(e&&t)||a.push({hid:"i18n-og",property:"og:locale",content:ae(t)})}function De(e,t,a){const o=e.filter(c=>{const n=c.iso;return n&&n!==t});if(o.length){const c=o.map(n=>({hid:`i18n-og-alt-${n.iso}`,property:"og:locale:alternate",content:ae(n.iso)}));a.push(...c)}}function ae(e){return(e||"").replace(/-/g,"_")}function M(e,t){return e.match(/^https?:\/\//)?e:t+e}function oe(e,{defaultLocale:t=$,strategy:a=b,trailingSlash:o=K,routesNameSeparator:c=U,defaultLocaleRouteNameSuffix:n=q,includeUprefixedFallback:r=!1,locales:i=[]}={}){if(a==="no_prefix")return e;const f=i.map(l=>P(l)?l:l.code);function s(l,m,d=!1,g=!1){return l.redirect&&(!l.component||!l.file)?[l]:m.reduce((h,E)=>{const{name:u}=l;let{path:_}=l;const p=A({},l);u&&(p.name=`${u}${c}${E}`),l.children&&(p.children=l.children.reduce((v,w)=>[...v,...s(w,[E],!0,g)],[]));const I=E===t;if(I&&a==="prefix_and_default")if(d)d&&g&&u&&(p.name+=`${c}${n}`);else{const v=x(A({},p),{path:_});if(u&&(v.name=`${p.name}${c}${n}`),l.children){v.children=[];for(const w of l.children)v.children=v.children.concat(s(w,[E],!0,!0))}h.push(v)}const y=d&&!_.startsWith("/"),T=!y&&!(I&&a==="prefix_except_default");return T&&(_=`/${E}${_}`),_&&(_=Ee(_,o,y)),T&&I&&a==="prefix"&&r&&h.push(A({},l)),p.path=_,h.push(p),h},[])}return e.reduce((l,m)=>[...l,...s(m,f||[])],[])}function Fe(e,{locales:t=[],baseUrl:a=Z}={}){if(!X(e.global,e.mode))throw new Error("TODO:");const o=R.ref(t);e.global.locales=R.computed(()=>o.value),e.global.__baseUrl=pe(a,{})}function xe(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function Ne(e,t,a){const o=`(${e.join("|")})`,c=`(?:${t}${a})?`,n=new RegExp(`${t}${o}${c}$`,"i"),r=xe(e);return f=>{if(f.name){const l=(P(f.name)?f.name:f.name.toString()).match(n);if(l&&l.length>1)return l[1]}else if(f.path){const s=f.path.match(r);if(s&&s.length>1)return s[1]}return""}}function $e(e){var t,a,o,c,n,r,i,f,s,l;return e.version=(t=e.version)!=null?t:4,e.defaultLocale=(a=e.defaultLocale)!=null?a:$,e.strategy=(o=e.strategy)!=null?o:b,e.trailingSlash=(c=e.trailingSlash)!=null?c:K,e.routesNameSeparator=(n=e.routesNameSeparator)!=null?n:U,e.defaultLocaleRouteNameSuffix=(r=e.defaultLocaleRouteNameSuffix)!=null?r:q,e.locales=(i=e.locales)!=null?i:[],e.defaultDetection=(f=e.defaultDetection)!=null?f:Se,e.baseUrl=(s=e.baseUrl)!=null?s:Z,e.routes=(l=e.routes)!=null?l:[],e}function be(e,t={}){const{version:a,defaultLocale:o,locales:c,strategy:n,trailingSlash:r,routesNameSeparator:i,defaultLocaleRouteNameSuffix:f,defaultDetection:s,baseUrl:l,routes:m}=$e(t),d=N(e),g=Re(c),L=g.map(_=>_.code),h=Ne(L,i,f);Fe(e,{locales:g,baseUrl:l});const E=oe(m,{locales:c,defaultLocale:o,strategy:n,trailingSlash:r,routesNameSeparator:i,defaultLocaleRouteNameSuffix:f});t.routes=E;let u=null;if(R.isVue3&&a===4)u=S.createRouter(t);else if(R.isVue2&&a===3)u=new se.default(t);else throw new Error("TODO:");return u.__defaultLocale=o,u.__localeCodes=L,u.__localeProperties=g.find(_=>_.code===d)||{code:d},u.__strategy=n,u.__trailingSlash=r,u.__routesNameSeparator=i,u.__defaultLocaleRouteNameSuffix=f,u.__defaultDetection=s,u.beforeEach((_,p,I)=>{const y=N(e),T=h(_)||y||o||"";y!==T&&Le(e,T),I()}),u}const Ue="0.0.0";exports.VERSION=Ue;exports.createRouter=be;exports.getRouteBaseName=O;exports.localeLocation=Ae;exports.localePath=ee;exports.localeRoute=te;exports.localizeRoutes=oe;exports.switchLocalePath=j;exports.useI18nHead=Ie; | ||
*/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; |
@@ -5,5 +5,7 @@ import { Composer } 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'; | ||
@@ -17,4 +19,37 @@ import type { RouteLocationRaw } from '@intlify/vue-router-bridge'; | ||
export declare type BaseUrlResolveHandler = (context: unknown) => string; | ||
export declare type BaseUrlResolveHandler<Context = unknown> = (context: Context) => 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 = { | ||
@@ -27,2 +62,15 @@ route?: ReturnType<typeof useRoute>; | ||
/** | ||
* 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 | ||
@@ -41,2 +89,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 | ||
*/ | ||
@@ -51,10 +101,38 @@ export declare function createRouter<Options extends VueI18nRoutingOptions = VueI18nRoutingOptions>(i18n: I18n, options?: Options): Options['version'] extends 4 ? Router : VueRouter; | ||
/** | ||
* 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 routesNameSeparator - A route name separator, if not provided, default separator is `routesNameSeparator` option of {@link VueI18nRoutingOptions} 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, routesNameSeparator?: string): string | null; | ||
export declare function getRouteBaseName(givenRoute?: Route_2 | RouteLocationNormalizedLoaded, { router, routesNameSeparator }?: I18nRoutingOptions): string | null; | ||
@@ -66,4 +144,4 @@ /** | ||
htmlAttrs?: MetaAttrs; | ||
meta?: MetaAttrs; | ||
link?: MetaAttrs; | ||
meta?: MetaAttrs[]; | ||
link?: MetaAttrs[]; | ||
} | ||
@@ -143,4 +221,15 @@ | ||
export declare function localizeRoutes(routes: VueI18nRoute[], { defaultLocale, strategy, trailingSlash, routesNameSeparator, defaultLocaleRouteNameSuffix, includeUprefixedFallback, locales }?: Pick<VueI18nRoutingOptions, 'defaultLocale' | 'strategy' | 'locales' | 'routesNameSeparator' | 'trailingSlash' | 'defaultLocaleRouteNameSuffix'> & { | ||
/** | ||
* 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[]; | ||
@@ -151,2 +240,12 @@ | ||
/** | ||
* 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<Context = unknown>(baseUrl: string | BaseUrlResolveHandler<Context>, context: Context): string; | ||
/** | ||
* Route config for vue-router v4 | ||
@@ -174,2 +273,7 @@ */ | ||
/** | ||
* Resolver for route localizing options | ||
*/ | ||
export declare type RouteOptionsResolver = (route: VueI18nRoute, allowedLocaleCodes: string[]) => ComputedRouteOptions | null; | ||
/** | ||
* SEO Attribute options | ||
@@ -186,2 +290,10 @@ */ | ||
/** | ||
* 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: { | ||
@@ -207,4 +319,12 @@ readonly PREFIX: "prefix"; | ||
*/ | ||
export declare function switchLocalePath(locale: Locale, { route, i18n }?: I18nRoutingOptions): string; | ||
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; | ||
@@ -219,3 +339,3 @@ | ||
*/ | ||
export declare function useI18nHead({ addDirAttribute, addSeoAttributes, strategy, defaultLocale, route, router, i18n }?: Pick<I18nRoutingOptions, 'strategy' | 'defaultLocale'> & ComposableOptions & I18nHeadOptions): I18nHeadMetaInfo; | ||
export declare function useI18nHead({ addDirAttribute, addSeoAttributes, strategy, defaultLocale, route, router, i18n }?: Pick<I18nRoutingOptions, 'strategy' | 'defaultLocale'> & ComposableOptions & I18nHeadOptions): Ref<I18nHeadMetaInfo>; | ||
@@ -269,3 +389,4 @@ /** | ||
* | ||
* @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 | ||
* | ||
@@ -311,7 +432,7 @@ * @defaultValue [] | ||
/** | ||
* Default detection direction | ||
* Default direction direction | ||
* | ||
* @defaultValue 'ltr' | ||
*/ | ||
defaultDetection?: Directions; | ||
defaultDirection?: Directions; | ||
/** | ||
@@ -330,10 +451,28 @@ * The fallback base URL to use as a prefix for alternate URLs in hreflang tags. | ||
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[]> | ||
__baseUrl: string | ||
/** | ||
* List of locales | ||
* | ||
* @defaultValue `undefined` | ||
*/ | ||
locales?: ComputedRef<string[] | LocaleObject[]> | ||
/** | ||
* List of locale codes | ||
* | ||
* @defaultValue `undefined` | ||
*/ | ||
localeCodes?: ComputedRef<string[]> | ||
__baseUrl?: string | ||
} | ||
@@ -343,5 +482,16 @@ } | ||
export interface ComposerCustom { | ||
locales: ComputedRef<string[] | LocaleObject[]> | ||
__baseUrl: string | ||
/** | ||
* List of locales | ||
* | ||
* @defaultValue `undefined` | ||
*/ | ||
locales?: ComputedRef<string[] | LocaleObject[]> | ||
/** | ||
* List of locale codes | ||
* | ||
* @defaultValue `undefined` | ||
*/ | ||
localeCodes?: ComputedRef<string[]> | ||
__baseUrl?: string | ||
} | ||
} |
@@ -32,7 +32,7 @@ var __defProp = Object.defineProperty; | ||
}; | ||
import { isRef, unref, isVue3, ref, computed, isVue2 } from "vue-demi"; | ||
import VueRouter3, { useRoute, useRouter, 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.28 | ||
* shared v9.2.0-beta.30 | ||
* (c) 2022 kazuya kawaguchi | ||
@@ -47,2 +47,3 @@ * Released under the MIT License. | ||
const isSymbol = (val) => typeof val === "symbol"; | ||
const isObject = (val) => val !== null && typeof val === "object"; | ||
const TRAILING_SLASH_RE = /\/$|\/\?/; | ||
@@ -75,2 +76,3 @@ function hasTrailingSlash(input = "", queryParams = false) { | ||
} | ||
const inBrowser = typeof window !== "undefined"; | ||
function warn(msg, err) { | ||
@@ -119,2 +121,5 @@ if (typeof console !== "undefined") { | ||
} | ||
function toRawRoute(maybeRoute) { | ||
return isVueRouter4 ? isRef(maybeRoute) ? maybeRoute.value : maybeRoute : isRef(maybeRoute) ? maybeRoute.value : maybeRoute; | ||
} | ||
function getRouteName(routeName) { | ||
@@ -141,2 +146,42 @@ return isString(routeName) ? routeName : isSymbol(routeName) ? routeName.toString() : "(null)"; | ||
} | ||
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; | ||
} | ||
} | ||
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; | ||
} | ||
} | ||
return matchedLocales; | ||
} | ||
const DefaultBrowserLocaleMatcher = matchBrowserLocale; | ||
function compareBrowserLocale(a, b) { | ||
if (a.score === b.score) { | ||
return b.code.length - a.code.length; | ||
} | ||
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 }); | ||
} | ||
const matchedLocales = matcher(normalizedLocales, browserLocales); | ||
if (matchedLocales.length > 1) { | ||
matchedLocales.sort(comparer); | ||
} | ||
return matchedLocales.length ? matchedLocales[0].code : ""; | ||
} | ||
const STRATEGIES = { | ||
@@ -155,3 +200,5 @@ PREFIX: "prefix", | ||
const DEFAULT_BASE_URL = ""; | ||
function getRouteBaseName(givenRoute = useRoute(), routesNameSeparator = useRouter().__routesNameSeparator || DEFAULT_ROUTES_NAME_SEPARATOR) { | ||
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); | ||
@@ -162,5 +209,4 @@ if (!_route.name) { | ||
const name = getRouteName(_route.name); | ||
return name.split(routesNameSeparator)[0]; | ||
return name.split(_routesNameSeparator)[0]; | ||
} | ||
const RESOLVED_PREFIXED = new Set([STRATEGIES.PREFIX_AND_DEFAULT, STRATEGIES.PREFIX_EXCEPT_DEFAULT]); | ||
function localePath(route, locale, options) { | ||
@@ -243,4 +289,5 @@ const localizedRoute = resolveRoute(route, locale, options); | ||
} | ||
function switchLocalePath(locale, { route = useRoute(), i18n = useI18n() } = {}) { | ||
const name = getRouteBaseName(); | ||
function switchLocalePath(locale, options) { | ||
const route = options && options.route || useRoute(); | ||
const name = getRouteBaseName(route, options); | ||
if (!name) { | ||
@@ -257,3 +304,3 @@ return ""; | ||
}); | ||
const path = localePath(baseRoute, locale, { route, i18n }); | ||
const path = localePath(baseRoute, locale, options); | ||
return path; | ||
@@ -270,32 +317,65 @@ } | ||
} = {}) { | ||
const _defaultLocale = defaultLocale || router.__defaultLocale; | ||
const _strategy = strategy || router.__strategy; | ||
const metaObject = { | ||
const _router = router; | ||
const _defaultLocale = defaultLocale || _router.__defaultLocale; | ||
const _strategy = strategy || _router.__strategy; | ||
const metaObject = ref({ | ||
htmlAttrs: {}, | ||
link: [], | ||
meta: [] | ||
}; | ||
const locale = getLocale(i18n); | ||
const currentLocale = router.__localeProperties || { code: locale }; | ||
const currentLocaleIso = currentLocale.iso; | ||
const currentLocaleDir = currentLocale.dir || router.__defaultDetection; | ||
if (addDirAttribute) { | ||
metaObject.htmlAttrs.dir = currentLocaleDir; | ||
}); | ||
function cleanMeta() { | ||
metaObject.value = { | ||
htmlAttrs: {}, | ||
link: [], | ||
meta: [] | ||
}; | ||
} | ||
if (addSeoAttributes && locale && i18n.locales) { | ||
if (currentLocaleIso) { | ||
metaObject.htmlAttrs.lang = currentLocaleIso; | ||
function updateMeta(_route) { | ||
if (i18n.locales == null || i18n.__baseUrl == null) { | ||
return; | ||
} | ||
const locales = i18n.locales.value; | ||
addHreflangLinks(locales, i18n.__baseUrl, metaObject.link, { | ||
defaultLocale: _defaultLocale, | ||
strategy: _strategy, | ||
route, | ||
router, | ||
i18n | ||
}); | ||
addCanonicalLinks(i18n.__baseUrl, metaObject.link, addSeoAttributes, { route, router, i18n }); | ||
addCurrentOgLocale(currentLocale, currentLocaleIso, metaObject.meta); | ||
addAlternateOgLocales(locales, currentLocaleIso, metaObject.meta); | ||
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; | ||
@@ -307,3 +387,3 @@ } | ||
} | ||
const localeMap = new Map(); | ||
const localeMap = /* @__PURE__ */ new Map(); | ||
for (const locale of locales) { | ||
@@ -347,3 +427,3 @@ const localeIso = locale.iso; | ||
const currentRoute = localeRoute(__spreadProps(__spreadValues({}, route), { | ||
name: getRouteBaseName() | ||
name: getRouteBaseName(route, options) | ||
}), void 0, options); | ||
@@ -419,2 +499,3 @@ if (currentRoute) { | ||
includeUprefixedFallback = false, | ||
optionsResolver = void 0, | ||
locales = [] | ||
@@ -430,2 +511,9 @@ } = {}) { | ||
} | ||
let routeOptions = null; | ||
if (optionsResolver != null) { | ||
routeOptions = optionsResolver(route, allowedLocaleCodes); | ||
if (routeOptions == null) { | ||
return [route]; | ||
} | ||
} | ||
const targetLocales = allowedLocaleCodes; | ||
@@ -478,3 +566,3 @@ return targetLocales.reduce((_routes, locale) => { | ||
} | ||
function extendI18n(i18n, { locales = [], baseUrl = DEFAULT_BASE_URL } = {}) { | ||
function extendI18n(i18n, { locales = [], localeCodes = [], baseUrl = DEFAULT_BASE_URL } = {}) { | ||
if (!isComposer(i18n.global, i18n.mode)) { | ||
@@ -484,44 +572,7 @@ throw new Error("TODO:"); | ||
const _locales = ref(locales); | ||
const _localeCodes = ref(localeCodes); | ||
i18n.global.locales = computed(() => _locales.value); | ||
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, _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.defaultDetection = (_h = options.defaultDetection) != null ? _h : DEFAULT_DETECTION_DIRECTION; | ||
options.baseUrl = (_i = options.baseUrl) != null ? _i : DEFAULT_BASE_URL; | ||
options.routes = (_j = options.routes) != null ? _j : []; | ||
return options; | ||
} | ||
function createRouter(i18n, options = {}) { | ||
@@ -536,11 +587,11 @@ const { | ||
defaultLocaleRouteNameSuffix, | ||
defaultDetection, | ||
defaultDirection, | ||
baseUrl, | ||
routes | ||
routes, | ||
routeOptionsResolver: optionsResolver | ||
} = asDefaultVueI18nRouterOptions(options); | ||
const locale = getLocale(i18n); | ||
const normalizedLocaleCodes = getNormalizedLocales(locales); | ||
const localeCodes = normalizedLocaleCodes.map((l) => l.code); | ||
const getLocaleFromRoute = createLocaleFromRouteGetter(localeCodes, routesNameSeparator, defaultLocaleRouteNameSuffix); | ||
extendI18n(i18n, { locales: normalizedLocaleCodes, baseUrl }); | ||
extendI18n(i18n, { locales: normalizedLocaleCodes, baseUrl, localeCodes }); | ||
const localizedRoutes = localizeRoutes(routes, { | ||
@@ -552,16 +603,9 @@ 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; | ||
router.__localeCodes = localeCodes; | ||
router.__localeProperties = normalizedLocaleCodes.find((l) => l.code === locale) || { code: locale }; | ||
router.__strategy = strategy; | ||
@@ -571,3 +615,3 @@ router.__trailingSlash = trailingSlash; | ||
router.__defaultLocaleRouteNameSuffix = defaultLocaleRouteNameSuffix; | ||
router.__defaultDetection = defaultDetection; | ||
router.__defaultDirection = defaultDirection; | ||
router.beforeEach((to, from, next) => { | ||
@@ -583,3 +627,58 @@ const currentLocale = getLocale(i18n); | ||
} | ||
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, createRouter, getRouteBaseName, localeLocation, localePath, localeRoute, localizeRoutes, switchLocalePath, useI18nHead }; | ||
export { VERSION, createLocaleFromRouteGetter, createRouter, findBrowserLocale, getLocale, getRouteBaseName, localeLocation, localePath, localeRoute, localizeRoutes, resolveBaseUrl, setLocale, switchLocalePath, useI18nHead }; |
@@ -1,5 +0,5 @@ | ||
var xe=Object.defineProperty,De=Object.defineProperties;var we=Object.getOwnPropertyDescriptors;var C=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable;var ne=(f,u,_)=>u in f?xe(f,u,{enumerable:!0,configurable:!0,writable:!0,value:_}):f[u]=_,T=(f,u)=>{for(var _ in u||(u={}))te.call(u,_)&&ne(f,_,u[_]);if(C)for(var _ of C(u))ae.call(u,_)&&ne(f,_,u[_]);return f},v=(f,u)=>De(f,we(u));var le=(f,u)=>{var _={};for(var S in f)te.call(f,S)&&u.indexOf(S)<0&&(_[S]=f[S]);if(f!=null&&C)for(var S of C(f))u.indexOf(S)<0&&ae.call(f,S)&&(_[S]=f[S]);return _};var VueI18nRouting=function(f,u,_,S){"use strict";function oe(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ce=oe(_);/*! | ||
* shared v9.2.0-beta.28 | ||
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 G=Object.assign,re=Array.isArray,se=e=>typeof e=="function",y=e=>typeof e=="string",fe=e=>typeof e=="boolean",ue=e=>typeof e=="symbol",ie=/\/$|\/\?/;function X(e="",t=!1){return t?ie.test(e):e.endsWith("/")}function de(e="",t=!1){if(!t)return(X(e)?e.slice(0,-1):e)||"/";if(!X(e,!0))return e||"/";const[a,...n]=e.split("?");return(a.slice(0,-1)||"/")+(n.length?`?${n.join("?")}`:"")}function he(e="",t=!1){if(!t)return e.endsWith("/")?e:e+"/";if(X(e,!0))return e||"/";const[a,...n]=e.split("?");return a+"/"+(n.length?`?${n.join("?")}`:"")}function _e(e,t){typeof console!="undefined"&&(console.warn("[vue-i18n-routing] "+e),t&&console.warn(t.stack))}function me(e){e=e||[];const t=[];for(const a of e)y(a)?t.push({code:a}):t.push(a);return t}function V(e,t){return u.isRef(e.locale)&&t==="composition"}function H(e){return"global"in e&&"mode"in e}function b(e){return H(e)?V(e.global,e.mode)?e.global.locale.value:e.global.locale:e.locale.value}function Le(e,t){H(e)?V(e.global,e.mode)?e.global.locale.value=t:e.global.locale=t:u.isRef(e.locale)&&(e.locale.value=t)}function ge(e,t,a){return e.replace(/\/+$/,"")+(t?"/":"")||(a?"":"/")}function W(e){return y(e)?e:ue(e)?e.toString():"(null)"}function B(e,t,{defaultLocale:a,strategy:n,routesNameSeparator:c,defaultLocaleRouteNameSuffix:l}){let r=W(e)+(n==="no_prefix"?"":c+t);return t===a&&n==="prefix_and_default"&&(r+=c+l),r}function Re(e,t){return se(e)?e(t):e}const $={PREFIX:"prefix",PREFIX_EXCEPT_DEFAULT:"prefix_except_default",PREFIX_AND_DEFAULT:"prefix_and_default",NO_PREFIX:"no_prefix"},O="",x=$.PREFIX_EXCEPT_DEFAULT,Q=!1,D="___",z="default",Ee="ltr",Y="";function w(e=_.useRoute(),t=_.useRouter().__routesNameSeparator||D){const a=u.unref(e);return a.name?W(a.name).split(t)[0]:null}const Se=new Set([$.PREFIX_AND_DEFAULT,$.PREFIX_EXCEPT_DEFAULT]);function J(e,t,a){const n=j(e,t,a);return n==null?"":u.isVue3?n.redirectedFrom||n.fullPath:n.route.redirectedFrom||n.route.fullPath}function K(e,t,a){const n=j(e,t,a);return n==null?void 0:u.isVue3?n:n.route}function pe(e,t,a){const n=j(e,t,a);return n==null?void 0:u.isVue3?n:n.location}function j(e,t,{router:a=_.useRouter(),i18n:n=S.useI18n(),defaultLocale:c=O,defaultLocaleRouteNameSuffix:l=z,routesNameSeparator:r=D,strategy:d=x,trailingSlash:h=!1}={}){const s=a.__defaultLocaleRouteNameSuffix||l,o=a.__defaultLocale||c,R=a.__routesNameSeparator||r,m=a.__strategy||d,E=t||b(n);let p=e;y(e)&&(p[0]==="/"?p={path:e}:p={name:e});let L=G({},p);if(L.path&&!L.name){const i=a.resolve(L),g=u.isVue3?i:i.route,I=w(g);y(I)?L={name:B(I,E,{defaultLocale:o,strategy:m,routesNameSeparator:R,defaultLocaleRouteNameSuffix:s}),params:g.params,query:g.query,hash:g.hash}:(!(E===c&&Se.has(m))&&m!==$.NO_PREFIX&&(L.path=`/${E}${L.path}`),L.path=h?he(L.path,!0):de(L.path,!0))}else{L.name=B(L.name,E,{defaultLocale:o,strategy:m,routesNameSeparator:R,defaultLocaleRouteNameSuffix:s});const{params:i}=L;i&&i["0"]===void 0&&i.pathMatch&&(i["0"]=i.pathMatch)}const A=a.resolve(L);return(u.isVue3?A.name:A.route.name)?A:a.resolve(e)}function M(e,{route:t=_.useRoute(),i18n:a=S.useI18n()}={}){const n=w();if(!n)return"";const s=!u.isVue3&&u.isRef(t)?t.value:t,{params:c}=s,l=le(s,["params"]),r={},d=G({},l,{name:n,params:v(T(T({},c),r),{0:c.pathMatch})});return J(d,e,{route:t,i18n:a})}function Ae({addDirAttribute:e=!1,addSeoAttributes:t=!1,strategy:a=x,defaultLocale:n=O,route:c=_.useRoute(),router:l=_.useRouter(),i18n:r=S.useI18n()}={}){const d=n||l.__defaultLocale,h=a||l.__strategy,s={htmlAttrs:{},link:[],meta:[]},o=b(r),R=l.__localeProperties||{code:o},m=R.iso,E=R.dir||l.__defaultDetection;if(e&&(s.htmlAttrs.dir=E),t&&o&&r.locales){m&&(s.htmlAttrs.lang=m);const p=r.locales.value;Ie(p,r.__baseUrl,s.link,{defaultLocale:d,strategy:h,route:c,router:l,i18n:r}),Pe(r.__baseUrl,s.link,t,{route:c,router:l,i18n:r}),Te(R,m,s.meta),ye(p,m,s.meta)}return s}function Ie(e,t,a,n){if(n.strategy===$.NO_PREFIX)return;const c=new Map;for(const l of e){const r=l.iso;if(!r){_e("Locale ISO code is required to generate alternate link");continue}const[d,h]=r.split("-");d&&h&&(l.isCatchallLocale||!c.has(d))&&c.set(d,l),c.set(r,l)}for(const[l,r]of c.entries()){const d=M(r.code,n);d&&a.push({hid:`i18n-alt-${l}`,rel:"alternate",href:k(d,t),hreflang:l})}if(n.defaultLocale){const l=M(n.defaultLocale,n);l&&a.push({hid:"i18n-xd",rel:"alternate",href:k(l,t),hreflang:"x-default"})}}function Pe(e,t,a,n){const{route:c}=n,l=K(v(T({},c),{name:w()}),void 0,n);if(l){let r=k(l.path,e);const d=!fe(a)&&a.canonicalQueries||[];if(d.length){const h=l.query,s=new URLSearchParams;for(const R of d)if(R in h){const m=h[R];re(m)?m.forEach(E=>s.append(R,E||"")):s.append(R,m||"")}const o=s.toString();o&&(r=`${r}?${o}`)}t.push({hid:"i18n-can",rel:"canonical",href:r})}}function Te(e,t,a){!(e&&t)||a.push({hid:"i18n-og",property:"og:locale",content:Z(t)})}function ye(e,t,a){const n=e.filter(c=>{const l=c.iso;return l&&l!==t});if(n.length){const c=n.map(l=>({hid:`i18n-og-alt-${l.iso}`,property:"og:locale:alternate",content:Z(l.iso)}));a.push(...c)}}function Z(e){return(e||"").replace(/-/g,"_")}function k(e,t){return e.match(/^https?:\/\//)?e:t+e}function ee(e,{defaultLocale:t=O,strategy:a=x,trailingSlash:n=Q,routesNameSeparator:c=D,defaultLocaleRouteNameSuffix:l=z,includeUprefixedFallback:r=!1,locales:d=[]}={}){if(a==="no_prefix")return e;const h=d.map(o=>y(o)?o:o.code);function s(o,R,m=!1,E=!1){return o.redirect&&(!o.component||!o.file)?[o]:R.reduce((L,A)=>{const{name:i}=o;let{path:g}=o;const I=T({},o);i&&(I.name=`${i}${c}${A}`),o.children&&(I.children=o.children.reduce((P,q)=>[...P,...s(q,[A],!0,E)],[]));const F=A===t;if(F&&a==="prefix_and_default")if(m)m&&E&&i&&(I.name+=`${c}${l}`);else{const P=v(T({},I),{path:g});if(i&&(P.name=`${I.name}${c}${l}`),o.children){P.children=[];for(const q of o.children)P.children=P.children.concat(s(q,[A],!0,!0))}L.push(P)}const N=m&&!g.startsWith("/"),U=!N&&!(F&&a==="prefix_except_default");return U&&(g=`/${A}${g}`),g&&(g=ge(g,n,N)),U&&F&&a==="prefix"&&r&&L.push(T({},o)),I.path=g,L.push(I),L},[])}return e.reduce((o,R)=>[...o,...s(R,h||[])],[])}function Fe(e,{locales:t=[],baseUrl:a=Y}={}){if(!V(e.global,e.mode))throw new Error("TODO:");const n=u.ref(t);e.global.locales=u.computed(()=>n.value),e.global.__baseUrl=Re(a,{})}function Ne(e){return new RegExp(`^/(${e.join("|")})(?:/|$)`,"i")}function $e(e,t,a){const n=`(${e.join("|")})`,c=`(?:${t}${a})?`,l=new RegExp(`${t}${n}${c}$`,"i"),r=Ne(e);return h=>{if(h.name){const o=(y(h.name)?h.name:h.name.toString()).match(l);if(o&&o.length>1)return o[1]}else if(h.path){const s=h.path.match(r);if(s&&s.length>1)return s[1]}return""}}function Ue(e){var t,a,n,c,l,r,d,h,s,o;return e.version=(t=e.version)!=null?t:4,e.defaultLocale=(a=e.defaultLocale)!=null?a:O,e.strategy=(n=e.strategy)!=null?n:x,e.trailingSlash=(c=e.trailingSlash)!=null?c:Q,e.routesNameSeparator=(l=e.routesNameSeparator)!=null?l:D,e.defaultLocaleRouteNameSuffix=(r=e.defaultLocaleRouteNameSuffix)!=null?r:z,e.locales=(d=e.locales)!=null?d:[],e.defaultDetection=(h=e.defaultDetection)!=null?h:Ee,e.baseUrl=(s=e.baseUrl)!=null?s:Y,e.routes=(o=e.routes)!=null?o:[],e}function be(e,t={}){const{version:a,defaultLocale:n,locales:c,strategy:l,trailingSlash:r,routesNameSeparator:d,defaultLocaleRouteNameSuffix:h,defaultDetection:s,baseUrl:o,routes:R}=Ue(t),m=b(e),E=me(c),p=E.map(g=>g.code),L=$e(p,d,h);Fe(e,{locales:E,baseUrl:o});const A=ee(R,{locales:c,defaultLocale:n,strategy:l,trailingSlash:r,routesNameSeparator:d,defaultLocaleRouteNameSuffix:h});t.routes=A;let i=null;if(u.isVue3&&a===4)i=_.createRouter(t);else if(u.isVue2&&a===3)i=new ce.default(t);else throw new Error("TODO:");return i.__defaultLocale=n,i.__localeCodes=p,i.__localeProperties=E.find(g=>g.code===m)||{code:m},i.__strategy=l,i.__trailingSlash=r,i.__routesNameSeparator=d,i.__defaultLocaleRouteNameSuffix=h,i.__defaultDetection=s,i.beforeEach((g,I,F)=>{const N=b(e),U=L(g)||N||n||"";N!==U&&Le(e,U),F()}),i}const Oe="0.0.0";return f.VERSION=Oe,f.createRouter=be,f.getRouteBaseName=w,f.localeLocation=pe,f.localePath=J,f.localeRoute=K,f.localizeRoutes=ee,f.switchLocalePath=M,f.useI18nHead=Ae,Object.defineProperty(f,"__esModule",{value:!0}),f[Symbol.toStringTag]="Module",f}({},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-2adf43f", | ||
"version": "0.0.0-33d6652", | ||
"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", | ||
@@ -18,11 +18,12 @@ "vue-demi": "^0.12.1" | ||
"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@3", | ||
"vue-template-compiler": "^2.6.14", | ||
"vue-router": "^4.0.12", | ||
"vue-router3": "npm:vue-router@latest", | ||
"vue2": "npm:vue@2" | ||
@@ -33,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" | ||
@@ -66,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" | ||
}, | ||
@@ -95,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" | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
66412
1197
0
16