next-roots
Version:
Utility to handle internationalized routing for Next.js app folder.
161 lines (134 loc) • 21.5 kB
JavaScript
;var fe=Object.create;var mt=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var Re=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Pe(e))!de.call(t,a)&&a!==r&&mt(t,a,{get:()=>e[a],enumerable:!(o=ye(e,a))||o.enumerable});return t};var R=(t,e,r)=>(r=t!=null?fe(he(t)):{},Re(e||!t||!t.__esModule?mt(r,"default",{value:t,enumerable:!0}):r,t));var me=R(require("node-watch")),ge=R(require("parse-typed-args")),M=R(require("path"));function gt(...t){return e=>t.map(r=>r(e))}var p=require("fs"),I=R(require("path"));function L(t,e){V(I.default.dirname(t)),(0,p.writeFileSync)(t,e)}function lt(t,e="utf8"){return Q(t)?(0,p.readFileSync)(t).toString(e):""}function ut(t,e){t!==e&&(V(I.default.dirname(e)),(0,p.copyFileSync)(t,e))}function Q(t){return(0,p.existsSync)(t)?(0,p.statSync)(t).isFile():!1}function V(t){(0,p.existsSync)(t)||(0,p.mkdirSync)(t,{recursive:!0})}function H(t){F(t)&&((0,p.readdirSync)(t).forEach(e=>{let r=I.default.join(t,e);F(r)?H(r):(0,p.unlinkSync)(r)}),(0,p.rmdirSync)(t))}function F(t){return(0,p.existsSync)(t)?(0,p.statSync)(t).isDirectory():!1}var xt=require("path-to-regexp");var Rt=R(require("path"));function ft(t,e){let r=0;if(t===e)return 0;for(;t[r]===e[r];)r++;return r}var yt=R(require("path"));function Pt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function ht(t){return t.replace(/[^a-zA-Z0-9]/gi,"")}function J(t){return t.replace(/\.[^/.]+$/,"")}function dt(t){return t.startsWith("/")?t.slice(1):t}function X(t){return t=t.replaceAll(yt.default.sep,"/"),t=t.replace(/\/\/+/g,"/"),t=t.replace(/\/$/,""),t}function Y(...t){return t.join("/")}function d(...t){let e=Y(...t);return e=X(e),e=e.startsWith("/")?e:`/${e}`,e}function C(...t){return e=>t.reduce((r,o)=>o(r),e)}function s(t){return`{{${t}}}`}function f(...t){return t.reduce((e,r)=>({...e,[r]:s(r)}),{})}function x(...t){return(e,r)=>{let a=C(...t.filter(Boolean))(e);return Object.entries(r).reduce((i,[n,c])=>i.replaceAll(s(n),c||""),a)}}function O({getLocalizedAbsolutePath:t,getOriginAbsolutePath:e}){return r=>{let o=e(r.originPath),a=t(r.localizedPath),i=ft(o,a),n=d(o.slice(i)),c=d(a.slice(i)),m=[...Rt.default.dirname(c).split("/").slice(1).map(()=>".."),n];return C(X,J,dt)(Y(...m))}}function A(t="page"){return e=>{let r=C(J,ht,Pt);return(e.originPath.match(new RegExp(`^/${t}.([tj])sx?$`))?`root/${t}`:e.originPath).split(/[-/_]/g).map(r).join("")}}var N=class{rewrite;originContents;constructor(e,r){this.rewrite=e,this.originContents=r}getOriginContents(){return this.originContents}getRewrite(){return this.rewrite}};function y(t){return t.replaceAll(/:any\)/g,")")}var B=f("routeLocales","routeNamesStatic","routeNamesDynamic","routeParamsDynamic"),xe=({isDynamic:t=!1})=>`
export type RouteLocale = ${B.routeLocales};
export type RouteNameStatic = ${B.routeNamesStatic};
export type RouteNameDynamic = ${t?B.routeNamesDynamic:"never"};
export type RouteName = ${t?"RouteNameStatic | RouteNameDynamic":"RouteNameStatic"};
export type Route = { name: RouteName; href: \`/\${string}\` };
export type RouteParamsStatic<T extends object = object> = T & { locale?: string };
export type RouteParamsDynamic<T extends RouteName> = ${t?B.routeParamsDynamic:"RouteParamsStatic"};
export type RouterSchema = { defaultLocale: string, locales: string[], routes: Record<RouteLocale, Route[]> };
export const schema: RouterSchema;
export class Router {
constructor(schema: RouterSchema)
static getLocale(): RouteLocale
static setLocale(locale: string): void
static getPageHref(): Promise<string>
static setPageHref(pageHref: string): void
static setParams(params: Promise<Record<string, string>>): void
getHref<T extends RouteNameStatic>(name: T): string
getHref<T extends RouteNameStatic>(name: T, params: RouteParamsStatic): string
${t?"getHref<T extends RouteNameDynamic>(name: T, params: RouteParamsDynamic<T>): string":""}
getLocaleFromHref(href: string): string
getRouteFromHref(href: string): Route | undefined
}
export function compileHref(href: string, params: Record<string, string>): string
export function formatHref(href: string, params: Record<string, string>): string
export type PageProps<TParams = any, TSearchParams = any> = { locale: RouteLocale; params: TParams, searchParams: TSearchParams }
export type LayoutProps<TParams = any> = { locale: string, params: TParams }
export type GeneratePageStaticParamsProps<TParams = any, TSearchParams = any> = { pageLocale: string, params: TParams, searchParams: TSearchParams }
export type GeneratePageMetadataProps<TParams = any, TSearchParams = any> = { locale: RouteLocale, getPageHref: () => Promise<string>, params: TParams, searchParams: TSearchParams }
export type GeneratePageViewportProps<TParams = any, TSearchParams = any> = { locale: RouteLocale, getPageHref: () => Promise<string>, params: TParams, searchParams: TSearchParams }
export type GenerateLayoutStaticParamsProps<TParams = any> = { locale: string, params: TParams }
export type GenerateLayoutMetadataProps<TParams = any> = { locale: string, params: TParams }
export type GenerateLayoutViewportProps<TParams = any> = { locale: string, params: TParams }
/**
* @deprecated Use GeneratePageStaticParamsProps instead
*/
export type GenerateStaticParamsProps = { pageLocale: string }
`;function Fe(t){return e=>!t(e)}function we(t,e,r){let o=`'${t}'`;return e<r.length-1&&(o+=" | "),o}function tt(t){return t.map(we).join("")}function Ft(t){return t.name}function k(t){return!!t.name.match(/\[\[\.\.\.\w+\]\]/g)}function wt(t){return!!t.name.match(/\[\.\.\.\w+\]/g)||k(t)}function St(t){return!!t.name.match(/\[\[\w+\]\]/g)}function et(t){return!!t.name.match(/\[\w+\]/g)||St(t)||wt(t)||k(t)}function rt(t){return t.routes[t.defaultLocale]||[]}function Se(t){return rt(t)?.filter(Fe(et)).map(Ft)}function Te(t){return rt(t)?.filter(et).map(Ft)}function Ce(t){return(rt(t)?.filter(et)).reduce((o,a,i,n)=>{let{keys:c=[]}=(0,xt.pathToRegexp)(a.href),l=St(a)||k(a)?"?":"",m=wt(a)||k(a)?"string[]":"string";return o+=`T extends '${a.name}' ? RouteParamsStatic<{${c.map(u=>`${u.name}${l}:${m}`)}}> : `,i===n.length-1&&(o+="RouteParamsStatic"),o},"")}function De(t){return{routeLocales:tt(t.locales),routeNamesDynamic:tt(Te(t)),routeNamesStatic:tt(Se(t)),routeParamsDynamic:Ce(t)}}function Tt(t){let e=De(t);return x()(xe({isDynamic:!!e.routeNamesDynamic}),e)}function Ct({getDistAbsolutePath:t}){return e=>{let r=t("index.d.ts"),o=Tt(e);L(r,o)}}function ot(t){return!!t.match(/page\.([tj]sx?)$/)}function at(t){return!!t.match(/layout\.([tj]sx?)$/)}function Dt(t){return!!t.match(/template\.([tj]sx?)$/)}function $t(t){return!!t.match(/not-found\.([tj]sx?)$/)}function $e(t){return!!t.originPath.match(/\[\[\.\.\.\w+\]\]/g)}function Le(t){return!!t.originPath.match(/\[\.\.\.\w+\]/g)}function E(t){return!!t.originPath.match(/\[\w+\]/g)||Le(t)||$e(t)}function P(t){return!!t.localizedPath.match(/\.tsx?$/g)}function S({defaultLocale:t,locales:e}){return r=>{let o=r.startsWith("/")?r.slice(1):r,[a]=o.split("/");return e.includes(a)?a:t}}var Lt={originPath:s("originPath"),locale:s("locale")},Ne=`
import {generateStaticParams as generateStaticParamsOrigin} from '${Lt.originPath}'
export async function generateStaticParams({ params, ...otherProps }:any) {
return generateStaticParamsOrigin({ ...otherProps, params, locale: "${Lt.locale}" })
}
`;function Oe(t){return`${t}${Ne}`}function Nt(t){return t.getOriginContents().match(/export .+ generateStaticParams/g)?Oe:e=>e}var nt={originPath:s("originPath"),locale:s("locale")},Ae=`
export { metadata } from '${nt.originPath}'
`,Ee=`
import {generateMetadata as generateMetadataOrigin} from '${nt.originPath}'
export async function generateMetadata(props:any) {
return generateMetadataOrigin({ ...props, locale: "${nt.locale}" })
}
`;function be(t){return`${t}${Ae}`}function ve(t){return e=>{let r=`${e}${Ee}`;return P(t)||(r=y(r)),r}}function Ot(t){return t.getOriginContents().match(/export .+ generateMetadata/g)?ve(t.getRewrite()):t.getOriginContents().match(/export .+ metadata/g)?be:e=>e}var it={originPath:s("originPath"),locale:s("locale")},je=`
export { viewport } from '${it.originPath}'
`,He=`
import {generateViewport as generateViewportOrigin} from '${it.originPath}'
export function generateViewport({ params, searchParams, ...otherProps }:any) {
return generateViewportOrigin({ ...otherProps, params, searchParams, locale: "${it.locale}" })
}
`;function Ge(t){return`${t}${je}`}function ze(t){return e=>{let r=`${e}${He}`;return P(t)||(r=y(r)),r}}function At(t){return t.getOriginContents().match(/export .+ generateViewport/g)?ze(t.getRewrite()):t.getOriginContents().match(/export .+ viewport/g)?Ge:e=>e}var b=f("dynamic","dynamicParams","revalidate","fetchCache","runtime","preferredRegion"),Me={dynamic:`export const dynamic = ${b.dynamic}
`,dynamicParams:`export const dynamicParams = ${b.dynamicParams}
`,revalidate:`export const revalidate = ${b.revalidate}
`,fetchCache:`export const fetchCache = ${b.fetchCache}
`,runtime:`export const runtime = ${b.runtime}
`,preferredRegion:`export const preferredRegion = ${b.preferredRegion}
`},Ie={dynamic:/export const dynamic = (.*)/,dynamicParams:/export const dynamicParams = (.*)/,revalidate:/export const revalidate = (.*)/,fetchCache:/export const fetchCache = (.*)/,runtime:/export const runtime = (.*)/,preferredRegion:/export const preferredRegion = (.*)/};function Ve(t){return Object.entries(Ie).reduce((e,[r,o])=>(e[r]=t.match(o)?.[1],e),{})}function Be(t,e){return Me[t].replace(s(t),e)}function ke(t){let e=Object.entries(t).reduce((r,[o,a])=>a?`${r}${Be(o,a)}`:r,"");return r=>e===""?r:`${r}
${e}`}function _(t){let e=Ve(t.getOriginContents());return ke(e)}var G=f("originName","originPath","locale"),Et=`
import Origin${G.originName} from '${G.originPath}'
export default function Localized${G.originName}(props:any) {
{/* @ts-ignore */}
return <Origin${G.originName} {...props} locale="${G.locale}" />
}
`;function _e(t){return e=>{let r=O(t),o=A("layout"),a=S({defaultLocale:t.defaultLocale,locales:t.locales});return{originPath:r(e),originName:o(e),locale:a(e.localizedPath)}}}function bt(t){let e=_e(t);return r=>{let o=e(r),a=P(r)?Et:y(Et),i=t.getOriginContents(r.originPath),n=new N(r,i);return x(_(n),Ot(n),At(n),Nt(n))(a,o)}}var z=f("originName","originPath","locale"),Ue=`
import ${z.originName}Origin from '${z.originPath}'
export default function ${z.originName}() {
{/* @ts-ignore */}
return <${z.originName}Origin locale="${z.locale}" />
}
`;function Ke(t){return e=>{let r=O(t),o=A("not-found"),a=S({defaultLocale:t.defaultLocale,locales:t.locales});return{originPath:r(e),originName:o(e),locale:a(e.localizedPath)}}}function vt(t){let e=Ke(t);return r=>{let o=e(r);return x()(Ue,o)}}var v=class extends Error{},j=class extends v{},U=class extends v{};function We(t){return t.match(/\/[(\w-)]+/)?.[0]?.replace(/\/\([\w-]+\)/,"")||""}function qe(t){return t.replace(/\/[(\w-)]+/,"")}function jt(t){return t.replace(/\/page\.([tj])sx?$/,"")}function Ht(t){return t.replace(/\/\([\w-]+\)/g,"")}function Gt(t){return t.replace(/\/@\w+/g,"")}function zt(t){let e=t.replace(/\(\.\)/g,""),r=/[[\w-\]]+\/\(\.{2}\)/g;for(;r.test(e);)e=e.replace(r,"");return e.replace(/.*\(\.{3}\)/g,"/")}function Ze(t){return t.replace(/\/\[\[\.\.\.(\w+)\]\]/g,"{/*$1}").replace(/\/\[\[(\w+)\]\]/g,"{/:$1}").replace(/\/\[\.\.\.(\w+)\]/g,"/*$1").replace(/\/\[(\w+)\]/g,"/:$1")}function Qe({originPath:t}){let e=C(jt,Ht,Gt,zt);return d(e(t))}function Je({localizedPath:t}){let e=We(t),r=C(qe,jt,Ht,Gt,zt,Ze);return d(e,r(t))}function Xe({originPath:t,skip:e}){return!!(t.match(/\/page\.([tj])sx?$/)||t==="/")&&(!e||typeof e=="object"&&!e.page)}function Mt(t){return!!(t&&typeof t=="object"&&"name"in t&&"href"in t)}function K(t){if(Xe(t))return{name:Qe(t),href:Je(t)}}var It={originPath:s("originPath"),pageLocale:s("pageLocale")},Ye=`
import {generateStaticParams as generateStaticParamsOrigin} from '${It.originPath}'
export async function generateStaticParams({ params, ...otherProps }:any) {
return generateStaticParamsOrigin({ ...otherProps, params, pageLocale: "${It.pageLocale}" })
}
`;function tr(t){return`${t}${Ye}`}function Vt(t){return t.getOriginContents().match(/export .+ generateStaticParams/g)?tr:e=>e}var D={originPath:s("originPath"),pageHref:s("pageHref"),pageLocale:s("pageLocale")},er=`
export { metadata } from '${D.originPath}'
`,rr=`
import {generateMetadata as generateMetadataOrigin} from '${D.originPath}'
export async function generateMetadata(props:any) {
const getPageHref = () => "${D.pageHref}"
return generateMetadataOrigin({ ...props, locale: "${D.pageLocale}", getPageHref })
}
`,or=`
import { compileHref } from 'next-roots'
import {generateMetadata as generateMetadataOrigin} from '${D.originPath}'
export async function generateMetadata({ params, ...otherProps }:any) {
const getPageHref = async () => compileHref('${D.pageHref}', await params)
return generateMetadataOrigin({ ...otherProps, params, locale: "${D.pageLocale}", getPageHref })
}
`;function ar(t){return`${t}${er}`}function nr(t){return e=>{let r=`${e}${E(t)?or:rr}`;return P(t)||(r=y(r)),r}}function Bt(t){return t.getOriginContents().match(/export .+ generateMetadata/g)?nr(t.getRewrite()):t.getOriginContents().match(/export .+ metadata/g)?ar:e=>e}var $={originPath:s("originPath"),pageHref:s("pageHref"),pageLocale:s("pageLocale")},ir=`
export { viewport } from '${$.originPath}'
`,sr=`
import {generateViewport as generateViewportOrigin} from '${$.originPath}'
export function generateViewport({ searchParams, ...otherProps }:any) {
const getPageHref = () => "${$.pageHref}"
return generateViewportOrigin({ ...otherProps, searchParams, locale: "${$.pageLocale}", getPageHref })
}
`,cr=`
import { compileHref } from 'next-roots'
import {generateViewport as generateViewportOrigin} from '${$.originPath}'
export function generateViewport({ params, searchParams, ...otherProps }:any) {
const getPageHref = async () => compileHref('${$.pageHref}', await params)
return generateViewportOrigin({ ...otherProps, params, searchParams, locale: "${$.pageLocale}", getPageHref })
}
`;function pr(t){return`${t}${ir}`}function mr(t){return e=>{let r=`${e}${E(t)?cr:sr}`;return P(t)||(r=y(r)),r}}function kt(t){return t.getOriginContents().match(/export .+ generateViewport/g)?mr(t.getRewrite()):t.getOriginContents().match(/export .+ viewport/g)?pr:e=>e}var g=f("originPath","originName","pageHref","pageLocale"),gr=`
import Origin${g.originName} from '${g.originPath}'
import { Router } from 'next-roots'
export default function Localized${g.originName}(props:any) {
Router.setLocale("${g.pageLocale}")
Router.setPageHref("${g.pageHref}")
{/* @ts-ignore */}
return <Origin${g.originName} {...props} locale={"${g.pageLocale}"} />
}
`,lr=`
import Origin${g.originName} from '${g.originPath}'
import { Router } from 'next-roots'
export default function Localized${g.originName}({ params, ...otherProps }:any) {
Router.setLocale('${g.pageLocale}')
Router.setPageHref('${g.pageHref}')
Router.setParams(params)
{/* @ts-ignore */}
return <Origin${g.originName} {...otherProps} params={params} locale={"${g.pageLocale}"} />
}
`;function ur(t){return e=>{let r=K(e);if(!r)throw new U("Given rewrite is not a page route rewrite.");let o=O(t),a=A("page"),i=S({defaultLocale:t.defaultLocale,locales:t.locales});return{originPath:o(e),originName:a(e),pageLocale:i(e.localizedPath),pageHref:r.href}}}function _t(t){let e=ur(t);return r=>{let o=E(r)?lr:gr;o=P(r)?o:y(o);let a=e(r),i=t.getOriginContents(r.originPath),n=new N(r,i);return x(Bt(n),kt(n),Vt(n),_(n))(o,a)}}function fr(t){return({originPath:e})=>{if(ot(e))return _t(t);if(at(e))return bt(t);if($t(e))return vt(t)}}function yr(t){let{skip:e}=t;return typeof e=="boolean"?e:!!(ot(t.originPath)&&e?.page||at(t.originPath)&&e?.layout||Dt(t.originPath)&&e?.template)}function Pr(t){return e=>{let{getOriginAbsolutePath:r,getLocalizedAbsolutePath:o}=t,{localizedPath:a,originPath:i}=e,n=r(i),c=o(a),m=fr(t)(e);if(!yr(e))if(m){let h=m(e);L(c,h)}else ut(n,c)}}function Ut(t){return e=>{let{getLocalizedAbsolutePath:r}=t,o=r();H(o);let a=Pr(t);e.map(a).filter(Boolean)}}var hr=f("schema"),dr=`
module.exports = Object.freeze(${hr.schema});
`;function Rr(t){return{schema:JSON.stringify(t)}}function Kt(t){let e=Rr(t);return x()(dr,e)}function Wt({getCacheAbsolutePath:t}){return e=>{let r=t("schema.js"),o=Kt(e);L(r,o)}}var Yt=R(require("fs")),W=R(require("path")),te=require("url");var qt=require("crypto"),Zt=require("esbuild"),Qt=require("esbuild-node-externals"),Jt=R(require("path"));async function Xt(t,e,r="cjs"){let o=(0,qt.createHash)("md5").update(t).digest("hex");return(0,Zt.build)({entryPoints:[t],outdir:`./${e}`,entryNames:o,bundle:!0,minify:!0,treeShaking:!0,platform:"node",format:r,target:"node18",drop:["debugger"],conditions:["react-server","next-roots-mock"],plugins:[(0,Qt.nodeExternalsPlugin)()]}).then(()=>Jt.default.resolve(`${e}/${o}.js`))}var ee=["i18n.ts","i18n.mjs","i18n.cjs","i18n.js"],re=".next-roots";async function xr(t){let e=async i=>import(i).then(n=>n.default?n.default:n).catch(()=>{}),r=(0,te.pathToFileURL)(t).toString(),o=await e(r);return o||await e(t)}async function Fr(t,e){let r;try{if(!Q(t))return;r=await Xt(t,re,e);let o=await xr(r);return o.generateRouteNames?await o.generateRouteNames():o.routeNames}catch(o){console.log("Error during parsing i18n file",{fileName:t,compiledFileName:r,err:o});return}}function wr(t){return ee.map(e=>W.default.join(t,e))}async function Sr(t,e){let r=wr(t),o;for(let a of r)o||=await Fr(a,e);return o}function Tr(t){let e=r=>Number(F(W.default.join(t,r)));return Yt.default.readdirSync(t).filter(r=>!ee.includes(r)).sort((r,o)=>e(o)-e(r))}async function st({dirName:t,locales:e,defaultLocale:r,parentOrigin:o,format:a}){let i=Tr(t),n=[];for(let c of i){let l=W.default.join(t,c),m={path:d(o?.path||"",c),localizations:e.map(u=>({locale:u,path:d(o?.localizations.find(h=>h.locale===u)?.path||"",c),skip:o?.localizations.find(h=>h.locale===u)?.skip||!1}))};if(F(l)){let u=await Sr(l,a),h=await st({defaultLocale:r,locales:e,parentOrigin:{...m,localizations:m.localizations.map(w=>({...w,path:w.path.replace(c,u?.find(({locale:T})=>w.locale===T)?.path||c),skip:u?.find(({locale:T})=>w.locale===T)?.skip||!1}))},dirName:l,format:a});n.push(...h)}else n.push(m)}return H(re),n}function oe({defaultLocale:t,prefixDefaultLocale:e}){return r=>r.localizations.map(o=>({originPath:r.path,localizedPath:d(!e&&o.locale===t?`(${o.locale})`:o.locale,o.path),skip:o.skip||!1}))}function ae({routes:t,locales:e,defaultLocale:r}){let o=S({locales:e,defaultLocale:r}),a={defaultLocale:r,locales:e,routes:{}};return t.forEach(i=>{let n=o(i.href)||r,c=a.routes[n]||[];c.some(({name:m})=>i.name===m)||(a.routes[n]=[...c,i])}),a}function ne(t,e=!1){let{defaultLocale:r,locales:o,getOriginAbsolutePath:a}=t,i=Ut(t),n=Ct(t),c=Wt(t),l=oe(t);return async()=>{let m=process.hrtime(),u=await st({locales:o,defaultLocale:r,dirName:a(),format:e?"esm":"cjs"}),h=u.flatMap(l),w=h.flatMap(K).filter(Mt),T=ae({routes:w,defaultLocale:r,locales:o});return gt(()=>i(h),()=>n(T),()=>c(T),()=>t.afterGenerate?.({config:t,origins:u,rewrites:h,routes:w,routerSchema:T}),()=>{let pt=process.hrtime(m),ue=(pt[0]*1e9+pt[1])/1e6;console.log(`\x1B[32mnext-roots\x1B[37m - generated ${w.length} localized routes in ${ue.toFixed(2)}ms`)})()}}var Z=R(require("path"));var ie="next-roots",se="./roots",ce="./app";function q(t){return(e="")=>Z.default.join(t,e)}function Cr(t){return e=>lt(t(e))}function pe(t){let e=Z.default.join(t.packageDir,"dist"),r=q(t.originDir),o=q(t.localizedDir),a=r();if(!F(a))throw new j(`Invalid "originDir" path. Directory "${a}" does not exist.`);let i=o();if(F(i)||V(i),!F(i))throw new j(`Invalid "localizedDir" path. Directory "${i}" neither exists nor be created.`);let n=q(e),c=q(Z.default.join(e,"cache")),l=t.defaultLocale||t.locales.at(0)||"";if(!t.locales.includes(l))throw new j('Invalid or empty "defaultLocale". Must be one of given "locales".');let m=Cr(r);return Object.freeze({locales:t.locales,defaultLocale:l,prefixDefaultLocale:t.prefixDefaultLocale,getLocalizedAbsolutePath:o,getOriginAbsolutePath:r,getDistAbsolutePath:n,getCacheAbsolutePath:c,getOriginContents:m,afterGenerate:t.afterGenerate})}var Dr=(0,ge.default)({opts:{cfgPath:{default:"roots.config.js",short:"c",parse:String},watch:{switch:!0,short:"w"},esm:{switch:!0,short:"m"}}})(process.argv),{esm:$r,watch:Lr,cfgPath:Nr}=Dr.opts,Or={localizedDir:M.default.resolve(ce),originDir:M.default.resolve(se),defaultLocale:"",locales:[],prefixDefaultLocale:!0,packageDir:M.default.join(process.cwd(),`node_modules/${ie}`)},Ar=require(M.default.join(process.cwd(),Nr)),Er={...Or,...Ar},le=pe(Er);async function br(){return process.on("SIGTERM",()=>process.exit(0)),process.on("SIGINT",()=>process.exit(0)),ne(le,$r)()}var ct=async()=>br().catch(t=>{t instanceof v?console.error(`\x1B[31mnext-roots\x1B[37m - ${t.message}`):console.error(t)});if(Lr){let t=(0,me.default)(le.getOriginAbsolutePath(),{recursive:!0});t.on("ready",function(){console.warn("\x1B[33mnext-roots\x1B[37m - running in watch mode"),ct()}),t.on("change",function(){console.warn("\x1B[33mnext-roots\x1B[37m - origins changed, regenerating..."),ct()})}else ct();
//# sourceMappingURL=cli.js.map