UNPKG

next-roots

Version:

Utility to handle internationalized routing for Next.js app folder.

3 lines (2 loc) 2.69 kB
"use strict";var l=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var r in e)l(t,r,{get:e[r],enumerable:!0})},S=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of P(e))!L.call(t,i)&&i!==r&&l(t,i,{get:()=>e[i],enumerable:!(o=y(e,i))||o.enumerable});return t};var H=t=>S(l({},"__esModule",{value:!0}),t);var M={};A(M,{Router:()=>p,compileHref:()=>c,formatHref:()=>d,schema:()=>h});module.exports=H(M);var a=require("path-to-regexp");function m({defaultLocale:t,locales:e}){return r=>{let o=r.startsWith("/")?r.slice(1):r,[i]=o.split("/");return e.includes(i)?i:t}}function b(t){return!t.includes("[")}function f(t){return t.includes("...")}function x(t){return t.includes("[")&&!f(t)}function E(t){return b(t)?1:x(t)?2:f(t)?3:0}function F(t){let e=t.name.split("/").filter(o=>o.length>0),r="0.";for(let o of e){let i=E(o);r+=i}return parseFloat(r)}function g(t){let e={},r=t.routes[t.defaultLocale]||[];for(let o of r)e[o.name]=F(o);return e}function R(t){let e=g(t);return Object.keys(t.routes).forEach(r=>{t.routes[r]=t.routes[r].sort((o,i)=>{let u=e[o.name],s=e[i.name];return u-s})}),t}var n=class t{static LOCALE="";static PAGE_HREF="/";static PARAMS;static getLocale(){return t.LOCALE}static setLocale(e){t.LOCALE=e}static async getPageHref(){return t.PARAMS?c(t.PAGE_HREF,await t.PARAMS):t.PAGE_HREF}static setPageHref(e){t.PAGE_HREF=e}static setParams(e){t.PARAMS=e}};var p=class extends n{schema;constructor(e){super(),this.schema=R(e)}getHref(e,r={}){let{locale:o=n.getLocale(),...i}=r;Object.keys(i).forEach(s=>{(i[s]===""||i[s]===null)&&delete i[s]});let u=this.findRouteByLocaleAndName(Array.isArray(o)?o.join("_"):o,e);return d(c(u?.href||"",i))}getLocaleFromHref(e){return m({locales:this.schema.locales,defaultLocale:this.schema.defaultLocale})(e)}getRouteFromHref(e){let r=this.getLocaleFromHref(e);return this.findRouteByLocaleAndHref(r,e)}getLocalizedRoutes(e){return this.schema.routes[e]||[]}findRouteByLocaleAndName(e,r){return this.getLocalizedRoutes(e).find(o=>o.name===r)}findRouteByLocaleAndHref(e,r){return this.getLocalizedRoutes(e).find(o=>(0,a.match)(o.href,{decode:decodeURIComponent})(r))}};function c(t,e){let r="";try{r=(0,a.compile)(t,{encode:encodeURIComponent})(e)}catch{r=t}return r}function d(...t){let e=t.join("/").replace(/\/\/+/g,"/").replace(/\/$/,"").replaceAll("%2F","/");return e.startsWith("/")?e:`/${e}`}var h;try{h=require("./cache/schema")}catch{throw new Error("Roots schema not found. Did you forget to run 'yarn roots'?")}0&&(module.exports={Router,compileHref,formatHref,schema}); //# sourceMappingURL=index.js.map