UNPKG

astro-i18n-aut

Version:
2 lines 2.15 kB
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