UNPKG

@itsmatteomanf/astro-robots-txt

Version:
15 lines 2.05 kB
import{writeFileSync as x}from"node:fs";import{ZodError as h}from"zod";var d="@itsmatteomanf/astro-robots-txt";import{z as o}from"zod";var i={sitemap:!0,policy:[{allow:"/",userAgent:"*"}],sitemapBaseFileName:"sitemap-index"},c=o.string().min(1),u=o.string().max(500),p=o.string().or(o.string().array()).optional(),y=o.object({host:o.string().or(o.boolean()).optional(),sitemap:c.or(c.array()).or(o.boolean()).optional().default(i.sitemap),policy:o.object({userAgent:p.default("*"),allow:p,disallow:p,cleanParam:u.or(u.array()).optional(),crawlDelay:o.number().nonnegative().optional().refine(r=>typeof r>"u"||Number.isFinite(r),{message:"Must be finite number"})}).array().nonempty().optional().default(i.policy),sitemapBaseFileName:o.string().min(1).optional().default(i.sitemapBaseFileName),transform:o.function().args(o.string()).returns(o.any()).optional()}).default(i),g=r=>y.parse(r);var w=r=>{let m,f=!0,a;return{name:d,hooks:{"astro:config:done":async({config:l,logger:s})=>{try{a=g(r)}catch(t){if(t instanceof h)f=!1,s.error("Invalid options. `robots.txt` will not be generated.");else throw t}m=l},"astro:build:done":async({dir:l,logger:s})=>{if(!f)return;let t="";a.sitemap&&(typeof a.sitemap=="boolean"?m.site?t+=`sitemap: ${new URL(`${a.sitemapBaseFileName}.xml`,m.site)} `:s.warn("No `site` provided. `robots.txt` has no sitemap."):a.sitemap instanceof Array?a.sitemap.map(e=>{t+=`sitemap: ${e} `}):t+=`sitemap: ${a.sitemap} `),t+=` `,a.policy.map(e=>{t+=`user-agent: ${e.userAgent} `,e.allow&&(e.allow instanceof Array?e.allow.map(n=>{t+=`allow: ${n} `}):t+=`allow: ${e.allow} `),e.disallow&&(e.disallow instanceof Array?e.disallow.map(n=>{t+=`disallow: ${n} `}):t+=`disallow: ${e.disallow} `),e.cleanParam&&(e.cleanParam instanceof Array?e.cleanParam.map(n=>{t+=`clean-param: ${n} `}):t+=`clean-param: ${e.cleanParam} `),e.crawlDelay&&(t+=`crawl-delay: ${e.crawlDelay} `)}),a.host&&(t+=`host: ${a.host} `),x(new URL("robots.txt",l),t),s.info("`robots.txt` created.")}}}};var I=w;export{I as default}; //# sourceMappingURL=index.js.map