const fs = require("fs");
const fm = require("front-matter");

/** @type {import('next-sitemap').IConfig} */
module.exports = {
  siteUrl: process.env.SITE_URL || "https://www.aaronjy.me",
  changefreq: "weekly",
  generateRobotsTxt: true,
  autoLastmod: false,
  generateIndexSitemap: false,
  robotsTxtOptions: {
    policies: [
      {
        userAgent: "*",
        allow: "/",
      },
    ],
  },
  // transform: async (config, path) => {
  //   const metadata = {
  //     loc: path
  //   }

  //   if (isHomepage(path)) {
  //     metadata.priority = 1
  //   } else if (isBasePage(path)) {
  //     metadata.priority = 0.8
  //   } else {
  //     if (isArticle(path)) {
  //       metadata.priority = 0.6
  //       const attributes = getArticleAttibutes(`content${path}.md`)
  //       if (!attributes) { return null }

  //       metadata.lastmod = attributes.moddate ?? attributes.pubdate ?? null

  //       console.log('Calculated sitemap dates for article', path)
  //     }
  //   }

  //   return metadata
  // }
};

function isHomepage(path) {
  return path === "/";
}

function isBasePage(path) {
  return path.split("/").length === 2;
}

function isArticle(path) {
  return path.startsWith("/writing/");
}

function getArticleAttibutes(path) {
  const fileContents = fs.readFileSync(path, {
    encoding: "utf-8",
  });

  // @ts-ignore
  const { attributes } = fm(fileContents);

  return {
    ...attributes,
    pubdate: attributes.pubdate?.toUTCString() ?? null,
    moddate: attributes.moddate?.toUTCString() ?? null,
  };
}