UNPKG

astro-i18n-aut

Version:
2 lines 9.44 kB
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var integration_exports={};__export(integration_exports,{default:()=>i18n,defaultI18nConfig:()=>defaultI18nConfig,filterSitemapByDefaultLocale:()=>filterSitemapByDefaultLocale,i18n:()=>i18n});module.exports=__toCommonJS(integration_exports);var import_node_path=__toESM(require("path"),1),import_node_url=require("url"),import_fast_glob=__toESM(require("fast-glob"),1),import_fs_extra=__toESM(require("fs-extra"),1),import_slash=__toESM(require("slash"),1);function removeLeadingForwardSlashWindows(path2){return path2.startsWith("/")&&path2[2]===":"?path2.substring(1):path2}__name(removeLeadingForwardSlashWindows,"removeLeadingForwardSlashWindows");var defaultI18nConfig={include:["pages/**/*"],exclude:["pages/api/**/*"],redirectDefaultLocale:308};function ensureValidTrailingSlashAndFormat(config,updateConfig,logger){config.trailingSlash==="ignore"&&config.output==="static"&&(logger.warn('avoid setting config.trailingSlash = "ignore" when config.output = "static"'),logger.warn('config.trailingSlash = "always" && config.build.format = "directory"'),logger.warn('config.trailingSlash = "never" && config.build.format = "file"'),logger.warn(`setting config.trailingSlash = "${config.trailingSlash}"`),updateConfig({trailingSlash:config.build.format==="directory"?"always":"never"})),config.trailingSlash==="always"&&config.build.format==="file"&&(logger.warn('config.trailingSlash = "always" must always be used with config.build.format = "directory"'),logger.warn('setting config.build.format = "directory"'),updateConfig({build:{format:"directory"}})),config.trailingSlash==="never"&&config.build.format==="directory"&&(logger.warn('config.trailingSlash = "never" must always be used with config.build.format = "file"'),logger.warn('setting config.build.format = "file"'),updateConfig({build:{format:"file"}}))}__name(ensureValidTrailingSlashAndFormat,"ensureValidTrailingSlashAndFormat");function createVirtualPlugin(virtualModuleId,json){let resolvedVirtualModuleId="\0"+virtualModuleId;return{name:"vite-plugin:"+virtualModuleId,resolveId(id){if(id===virtualModuleId)return resolvedVirtualModuleId},load(id){if(id===resolvedVirtualModuleId)return`export default ${JSON.stringify(json)}`}}}__name(createVirtualPlugin,"createVirtualPlugin");function createVirtualModules(config,updateConfig,i18nConfig){let virtualAstroi18nautConfig={defaultLocale:i18nConfig.defaultLocale,locales:i18nConfig.locales,redirectDefaultLocale:i18nConfig.redirectDefaultLocale,BASE_URL:getBaseUrl(config),trailingSlash:config.trailingSlash,build:{format:config.build.format}},virtualPlugin=createVirtualPlugin("virtual:astro-i18n-aut",virtualAstroi18nautConfig);updateConfig({vite:{plugins:[virtualPlugin],worker:{plugins:__name(()=>[virtualPlugin],"plugins")},optimizeDeps:{exclude:["virtual:astro-i18n-aut"]}}})}__name(createVirtualModules,"createVirtualModules");function getBaseUrl(config){let base=config.base;return base[0]!=="/"&&(base="/"+base),config.trailingSlash==="always"?base.at(-1)!=="/"&&(base=base+"/"):config.trailingSlash==="never"&&base!=="/"&&base.at(-1)==="/"&&(base=base.slice(0,-1)),base}__name(getBaseUrl,"getBaseUrl");async function ensureValidConfigs(config,updateConfig,i18nConfig,logger){ensureValidTrailingSlashAndFormat(config,updateConfig,logger),createVirtualModules(config,updateConfig,i18nConfig)}__name(ensureValidConfigs,"ensureValidConfigs");function i18n(userI18nConfig){let i18nConfig=Object.assign(defaultI18nConfig,userI18nConfig),{defaultLocale,locales,exclude,include,redirectDefaultLocale}=i18nConfig,pagesPathTmp={};async function removePagesPathTmp(){await Promise.all(Object.values(pagesPathTmp).map(pagePathTmp=>import_fs_extra.default.remove(pagePathTmp)))}return __name(removePagesPathTmp,"removePagesPathTmp"),{name:"astro-i18n-integration",hooks:{"astro:config:setup":__name(async({config,updateConfig,addMiddleware,command,injectRoute,logger})=>{ensureValidLocales(locales,defaultLocale,logger),await ensureValidConfigs(config,updateConfig,i18nConfig,logger),addMiddleware({entrypoint:"astro-i18n-aut/middleware",order:"pre"});let configSrcDirPathname=(0,import_node_url.fileURLToPath)(config.srcDir),included=ensureGlobsHaveConfigSrcDirPathname(typeof include=="string"?[include]:include,configSrcDirPathname),excluded=ensureGlobsHaveConfigSrcDirPathname(typeof exclude=="string"?[exclude]:exclude,configSrcDirPathname),pagesPath=import_node_path.default.join(configSrcDirPathname,"pages"),pagesPathTmpRoot=import_node_path.default.join(configSrcDirPathname,"astro_tmp_pages");for(let locale of Object.keys(locales))pagesPathTmp[locale]=`${pagesPathTmpRoot}_${locale}`;await removePagesPathTmp(),command==="build"&&await Promise.all(Object.keys(locales).filter(locale=>redirectDefaultLocale===!1||config.output==="server"?locale!==defaultLocale:!0).map(locale=>import_fs_extra.default.copy(pagesPath,pagesPathTmp[locale])));let entries=import_fast_glob.default.stream(included,{ignore:excluded,onlyFiles:!0}),entry;for await(entry of entries){let parsedPath=import_node_path.default.parse(entry),relativePath=import_node_path.default.relative(pagesPath,parsedPath.dir),extname=parsedPath.ext.slice(1).toLowerCase();if(extname!=="astro"){warnIsInvalidPage(extname,import_node_path.default.join(relativePath,parsedPath.base),configSrcDirPathname,logger);continue}for(let locale of Object.keys(locales)){if((redirectDefaultLocale===!1||config.output==="server")&&locale===defaultLocale)continue;let entrypoint=command==="build"?import_node_path.default.join(pagesPathTmp[locale],relativePath,parsedPath.base):import_node_path.default.join(pagesPath,relativePath,parsedPath.base),pattern=(0,import_slash.default)(import_node_path.default.join(locale,relativePath,parsedPath.name.endsWith("index")?"":parsedPath.name,config.build.format==="directory"?"/":""));injectRoute({entrypoint,pattern})}}},"astro:config:setup"),"astro:build:done":__name(async()=>{await removePagesPathTmp()},"astro:build:done"),"astro:server:done":__name(async()=>{await removePagesPathTmp()},"astro:server:done")}}}__name(i18n,"i18n");function ensureValidLocales(locales,defaultLocale,logger){if(!Object.keys(locales).includes(defaultLocale)){let errorMessage=`locales ${JSON.stringify(locales)} does not include "${defaultLocale}"`;throw logger.error(errorMessage),new Error(errorMessage)}}__name(ensureValidLocales,"ensureValidLocales");function ensureGlobsHaveConfigSrcDirPathname(filePaths,configSrcDirPathname){return filePaths.map(filePath=>(filePath=import_node_path.default.normalize(removeLeadingForwardSlashWindows(filePath)),filePath.includes(configSrcDirPathname)&&(filePath=import_node_path.default.relative(configSrcDirPathname,filePath)),filePath=import_node_path.default.posix.join(import_fast_glob.default.convertPathToPattern(configSrcDirPathname),(0,import_slash.default)(filePath)),filePath))}__name(ensureGlobsHaveConfigSrcDirPathname,"ensureGlobsHaveConfigSrcDirPathname");var hasWarnedIsInvalidPage=!1;function warnIsInvalidPage(extname,filePath,configSrcDirPathname,logger){return["js","ts","md","mdx","html"].includes(extname)?(hasWarnedIsInvalidPage===!1&&(logger.warn(`exclude or remove non-astro files from "${configSrcDirPathname}pages", as they cannot be translated`),hasWarnedIsInvalidPage=!0),logger.warn(import_node_path.default.join(configSrcDirPathname,"pages",filePath)),!0):!1}__name(warnIsInvalidPage,"warnIsInvalidPage");function removeHtmlExtension(url){return url.endsWith(".html")?url.slice(0,-5):url}__name(removeHtmlExtension,"removeHtmlExtension");function filterSitemapByDefaultLocale({defaultLocale,base:baseUrl="/"}){baseUrl[0]!=="/"&&(baseUrl="/"+baseUrl);let baseUrlWithoutTrailingSlash=baseUrl.at(-1)==="/"?baseUrl.slice(0,-1):baseUrl;return __name(function(page){let pathName=new URL(page).pathname,pathNameWithoutHtmlExtension=removeHtmlExtension(pathName),pathNameWithoutBaseUrl=baseUrl==="/"?pathNameWithoutHtmlExtension:pathNameWithoutHtmlExtension.replace(baseUrlWithoutTrailingSlash,""),pathNameWithoutBaseUrlStartsWithDefaultLocale=pathNameWithoutBaseUrl.slice(1,3)===defaultLocale;return!(pathNameWithoutBaseUrl.length===3&&pathNameWithoutBaseUrlStartsWithDefaultLocale||pathNameWithoutBaseUrl[0]==="/"&&pathNameWithoutBaseUrl[3]==="/"&&pathNameWithoutBaseUrlStartsWithDefaultLocale)},"filter")}__name(filterSitemapByDefaultLocale,"filterSitemapByDefaultLocale");0&&(module.exports={defaultI18nConfig,filterSitemapByDefaultLocale,i18n}); //# sourceMappingURL=index.cjs.map