astro-i18n-aut
Version:
The i18n integration for Astro 🧑🚀
2 lines • 2.15 kB
JavaScript
var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});import{defineMiddleware}from"astro/middleware";import virtualConfig from"virtual:astro-i18n-aut";var trailingSlash=virtualConfig.trailingSlash,BASE_URL=virtualConfig.BASE_URL?virtualConfig.BASE_URL:"/",defaultLocale=virtualConfig.defaultLocale,locales=virtualConfig.locales,localeKeys=Object.keys(virtualConfig.locales),redirectDefaultLocale=virtualConfig.redirectDefaultLocale,build=virtualConfig.build;function removeTrailingSlash(url){return url.at(-1)==="/"?url.slice(0,-1):url}__name(removeTrailingSlash,"removeTrailingSlash");function resolveTrailingSlash(url){let pathName=typeof url=="string"?url:url.pathname;return trailingSlash==="always"?pathName.at(-1)!=="/"&&(pathName=pathName+"/"):trailingSlash==="never"&&pathName!=="/"&&pathName.at(-1)==="/"&&(pathName=pathName.slice(0,-1)),pathName}__name(resolveTrailingSlash,"resolveTrailingSlash");function removeHtmlExtension(url){return url.endsWith(".html")?url.slice(0,-5):url}__name(removeHtmlExtension,"removeHtmlExtension");var i18nMiddleware=defineMiddleware((context,next)=>{if(redirectDefaultLocale===!1)return next();let status;typeof redirectDefaultLocale=="number"&&(status=redirectDefaultLocale);let{pathname:pathName,search}=new URL(context.request.url),pathNameWithoutHtmlExtension=removeHtmlExtension(pathName),baseUrlWithoutTrailingSlash=removeTrailingSlash(BASE_URL),pathNameWithoutBaseUrl=BASE_URL==="/"?pathNameWithoutHtmlExtension:pathNameWithoutHtmlExtension.replace(baseUrlWithoutTrailingSlash,""),pathNameWithoutBaseUrlStartsWithDefaultLocale=pathNameWithoutBaseUrl.slice(1,3)===defaultLocale;return pathNameWithoutBaseUrl.length===3&&pathNameWithoutBaseUrlStartsWithDefaultLocale?context.redirect(resolveTrailingSlash(BASE_URL)+search,status):pathNameWithoutBaseUrl[0]==="/"&&pathNameWithoutBaseUrl[3]==="/"&&pathNameWithoutBaseUrlStartsWithDefaultLocale?context.redirect(resolveTrailingSlash(baseUrlWithoutTrailingSlash+pathNameWithoutBaseUrl.slice(3))+search,status):next()});var onRequest=i18nMiddleware;export{onRequest};
//# sourceMappingURL=index.js.map