--- import { fetchAllPosts } from "@data/posts.js"; import { fetchAnalyticsData } from "@data/analytics.js"; import { fetchLinks } from "@data/links.js"; import { fetchGlobalData } from "@utils/data/global/index.js"; import { md } from "@utils/helpers/general.js"; import { getPopularPosts } from "@utils/getPopularPosts.js"; import icons from "@cdransf/astro-tabler-icons"; const { IconStar } = icons; const [analytics, links, posts] = await Promise.all([ fetchAnalyticsData(), fetchLinks(), fetchAllPosts(), ]); const popularPosts = getPopularPosts(posts, analytics); import AddonLinks from "@components/blocks/links/AddonLinks.astro"; import AssociatedMedia from "@components/blocks/AssociatedMedia.astro"; import BlockRenderer from "@components/blocks/BlockRenderer.astro"; import Coffee from "@components/blocks/banners/Coffee.astro"; import Layout from "@layouts/Layout.astro"; import Mastodon from "@components/blocks/banners/Mastodon.astro"; import OldPost from "@components/blocks/banners/OldPost.astro"; export const prerender = true; export async function getStaticPaths() { const posts = await fetchAllPosts(); return posts.map((post) => { const match = post.url.match(/^\/posts\/(\d{4})\/(.+)$/); if (!match) throw new Error(`Invalid post URL: ${post.url}`); const [, year, title] = match; return { params: { year, title }, props: { post }, }; }); } const { post } = Astro.props; const { globals } = await fetchGlobalData(Astro); const currentUrl = Astro.url.pathname; const htmlContent = md(post.content); ---