astro-i18n-aut
Version:
The i18n integration for Astro 🧑🚀
1 lines • 4.83 kB
Source Map (JSON)
{"version":3,"sources":["../../src/middleware/index.ts","../../src/edge-runtime/middleware.ts","../../src/edge-runtime/config.ts","../../src/edge-runtime/removeTrailingSlash.ts","../../src/edge-runtime/resolveTrailingSlash.ts","../../src/edge-runtime/removeHtmlExtension.ts"],"sourcesContent":["import { i18nMiddleware } from \"../edge-runtime/middleware\";\n\nexport const onRequest = i18nMiddleware;\n","import type { ValidRedirectStatus } from \"astro\";\nimport { defineMiddleware } from \"astro/middleware\";\nimport {\n defaultLocale,\n redirectDefaultLocale,\n BASE_URL as baseUrl,\n} from \"./config\";\nimport { removeTrailingSlash } from \"./removeTrailingSlash\";\nimport { resolveTrailingSlash } from \"./resolveTrailingSlash\";\nimport { removeHtmlExtension } from \"./removeHtmlExtension\";\n\nexport const i18nMiddleware = defineMiddleware((context, next) => {\n if (redirectDefaultLocale === false) {\n return next();\n }\n\n let status: ValidRedirectStatus | undefined;\n if (typeof redirectDefaultLocale === \"number\") {\n status = redirectDefaultLocale;\n }\n\n const { pathname: pathName, search } = new URL(context.request.url);\n const pathNameWithoutHtmlExtension = removeHtmlExtension(pathName);\n\n const baseUrlWithoutTrailingSlash = removeTrailingSlash(baseUrl);\n\n // remove baseUrlWithoutTrailingSlash from pathNameWithoutBaseUrl\n let pathNameWithoutBaseUrl =\n baseUrl === \"/\"\n ? pathNameWithoutHtmlExtension\n : pathNameWithoutHtmlExtension.replace(baseUrlWithoutTrailingSlash, \"\");\n\n const pathNameWithoutBaseUrlStartsWithDefaultLocale =\n pathNameWithoutBaseUrl.slice(1, 3) === defaultLocale;\n\n // avoid catching urls that start with \"/en\" like \"/enigma\"\n if (\n pathNameWithoutBaseUrl.length === 3 &&\n pathNameWithoutBaseUrlStartsWithDefaultLocale\n ) {\n return context.redirect(resolveTrailingSlash(baseUrl) + search, status);\n }\n // catch all \"/en/**/*\" urls\n if (\n pathNameWithoutBaseUrl[0] === \"/\" &&\n pathNameWithoutBaseUrl[3] === \"/\" &&\n pathNameWithoutBaseUrlStartsWithDefaultLocale\n ) {\n return context.redirect(\n resolveTrailingSlash(\n baseUrlWithoutTrailingSlash + pathNameWithoutBaseUrl.slice(3)\n ) + search,\n status\n );\n }\n // otherwise, it must be a defaultLocale or other url\n return next();\n});\n","import virtualConfig from \"virtual:astro-i18n-aut\";\n\nexport const trailingSlash = virtualConfig.trailingSlash;\nexport const BASE_URL = virtualConfig.BASE_URL ? virtualConfig.BASE_URL : \"/\";\nexport const defaultLocale = virtualConfig.defaultLocale;\nexport const locales = virtualConfig.locales;\nexport const localeKeys = Object.keys(virtualConfig.locales);\nexport const redirectDefaultLocale = virtualConfig.redirectDefaultLocale;\nexport const build = virtualConfig.build;\n","export function removeTrailingSlash(url: string) {\n return url.at(-1) === \"/\" ? url.slice(0, -1) : url;\n}\n","import { trailingSlash } from \"./config\";\n\nexport function resolveTrailingSlash(url: URL | string): string {\n let pathName = typeof url === \"string\" ? url : url.pathname;\n\n if (trailingSlash === \"always\") {\n if (pathName.at(-1) !== \"/\") {\n pathName = pathName + \"/\";\n }\n } else if (trailingSlash === \"never\") {\n if (pathName !== \"/\" && pathName.at(-1) === \"/\") {\n pathName = pathName.slice(0, -1);\n }\n }\n return pathName;\n}\n","export function removeHtmlExtension(url: string) {\n return url.endsWith(\".html\") ? url.slice(0, -\".html\".length) : url;\n}\n"],"mappings":"q+BAAA,iICCA,sBAAiC,4BCDjC,kCAA0B,6CAEb,cAAgB,8BAAAA,QAAc,cAC9B,SAAW,8BAAAA,QAAc,SAAW,8BAAAA,QAAc,SAAW,IAC7D,cAAgB,8BAAAA,QAAc,cAC9B,QAAU,8BAAAA,QAAc,QACxB,WAAa,OAAO,KAAK,8BAAAA,QAAc,OAAO,EAC9C,sBAAwB,8BAAAA,QAAc,sBACtC,MAAQ,8BAAAA,QAAc,MCR5B,SAAS,oBAAoB,IAAa,CAC/C,OAAO,IAAI,GAAG,EAAE,IAAM,IAAM,IAAI,MAAM,EAAG,EAAE,EAAI,GACjD,CAFgB,kDCET,SAAS,qBAAqB,IAA2B,CAC9D,IAAI,SAAW,OAAO,KAAQ,SAAW,IAAM,IAAI,SAEnD,OAAI,gBAAkB,SAChB,SAAS,GAAG,EAAE,IAAM,MACtB,SAAW,SAAW,KAEf,gBAAkB,SACvB,WAAa,KAAO,SAAS,GAAG,EAAE,IAAM,MAC1C,SAAW,SAAS,MAAM,EAAG,EAAE,GAG5B,QACT,CAbgB,oDCFT,SAAS,oBAAoB,IAAa,CAC/C,OAAO,IAAI,SAAS,OAAO,EAAI,IAAI,MAAM,EAAG,EAAe,EAAI,GACjE,CAFgB,kDJWT,IAAM,kBAAiB,oCAAiB,CAAC,QAAS,OAAS,CAChE,GAAI,wBAA0B,GAC5B,OAAO,KAAK,EAGd,IAAI,OACA,OAAO,uBAA0B,WACnC,OAAS,uBAGX,GAAM,CAAE,SAAU,SAAU,MAAO,EAAI,IAAI,IAAI,QAAQ,QAAQ,GAAG,EAC5D,6BAA+B,oBAAoB,QAAQ,EAE3D,4BAA8B,oBAAoB,QAAO,EAG3D,uBACF,WAAY,IACR,6BACA,6BAA6B,QAAQ,4BAA6B,EAAE,EAEpE,8CACJ,uBAAuB,MAAM,EAAG,CAAC,IAAM,cAGzC,OACE,uBAAuB,SAAW,GAClC,8CAEO,QAAQ,SAAS,qBAAqB,QAAO,EAAI,OAAQ,MAAM,EAItE,uBAAuB,CAAC,IAAM,KAC9B,uBAAuB,CAAC,IAAM,KAC9B,8CAEO,QAAQ,SACb,qBACE,4BAA8B,uBAAuB,MAAM,CAAC,CAC9D,EAAI,OACJ,MACF,EAGK,KAAK,CACd,CAAC,EDvDM,IAAM,UAAY","names":["virtualConfig"]}