import type { CollectionEntry } from "astro:content"; export type MicroEntry = CollectionEntry<"micro">; export function sortMicroEntries(entries: MicroEntry[]): MicroEntry[] { return entries.sort((a, b) => b.data.publishDate.getTime() - a.data.publishDate.getTime()); } export async function getAllMicroPosts(): Promise { const { getCollection } = await import("astro:content"); // Get only Pleroma micro posts try { const microPosts = await getCollection("micro"); return sortMicroEntries(microPosts); } catch (error) { console.warn("Micro collection not available:", error); return []; } } /** Extract all tags from micro posts */ export function getAllMicroTags(entries: MicroEntry[]): string[] { return entries.flatMap((entry) => entry.data.tags ?? []); } /** Get unique tags from micro posts */ export function getUniqueMicroTags(entries: MicroEntry[]): string[] { return [...new Set(getAllMicroTags(entries))]; } /** Get unique tags with counts from micro posts */ export function getUniqueMicroTagsWithCount(entries: MicroEntry[]): [string, number][] { return [ ...getAllMicroTags(entries).reduce( (acc, t) => acc.set(t, (acc.get(t) ?? 0) + 1), new Map(), ), ].sort((a, b) => b[1] - a[1]); }