import { mkdir, readdir, writeFile } from 'node:fs/promises'; import { dirname, join, relative, resolve, sep } from 'node:path'; import { fileURLToPath } from 'node:url'; const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..'); const appRoot = join(projectRoot, 'app'); const outputFile = join(projectRoot, 'public', 'meshkee', 'sitemap-config.json'); const pageNames = new Set(['page.js','page.jsx','page.ts','page.tsx']); async function findPages(directory) { const entries = await readdir(directory,{withFileTypes:true}); const pages=[]; for(const entry of entries){ const full=join(directory,entry.name); if(entry.isDirectory()) pages.push(...await findPages(full)); else if(pageNames.has(entry.name)) pages.push(full); } return pages; } function toRoute(file) { const segments=relative(appRoot,dirname(file)).split(sep).filter(Boolean); if(segments.some(segment=>segment.startsWith('[')||segment.startsWith('(')||segment==='api'))return null; return segments.length?`/${segments.join('/')}`:'/'; } const priorities={ '/':1, '/portfolios':.9, '/ourservices':.8, '/blog':.8, '/aboutus':.7, '/contactus':.6 }; const routes=(await findPages(appRoot)).map(toRoute).filter(Boolean).sort((a,b)=>a==='/'?-1:a.localeCompare(b)); const staticPages=[...new Set(routes)].map(path=>({path,...(path==='/'?{changefreq:'weekly'}:{}),priority:priorities[path]??.5})); await mkdir(dirname(outputFile),{recursive:true}); await writeFile(outputFile,`${JSON.stringify({baseUrl:'https://sanazgoodarzi.ir',staticPages},null,2)}\n`,'utf8'); console.log(`Generated Meshkee sitemap config with ${staticPages.length} static routes.`);