1- import { feedLoader } from "@ascorbic/feed-loader" ;
21import { docsLoader } from "@astrojs/starlight/loaders" ;
32import { docsSchema } from "@astrojs/starlight/schema" ;
4- import { defineCollection , z } from "astro:content" ;
3+ import { z } from "astro/zod" ;
4+ import { defineCollection } from "astro:content" ;
5+ import { parseAtomFeed , type Atom } from "feedsmith" ;
6+
7+ const feedLoader = ( url : string ) : ( ( ) => Promise < ( Atom . Entry < string > & { id : string } ) [ ] > ) => {
8+ return async ( ) => {
9+ const response = await fetch ( url ) ;
10+ if ( ! response . ok ) {
11+ throw new Error ( `Failed to fetch feed from ${ url } : ${ response . statusText } ` ) ;
12+ }
13+
14+ const feed = parseAtomFeed ( await response . text ( ) ) ;
15+ return feed . entries ! . map ( ( e , i ) => ( { ...e , id : e . id ! , index : i } ) ) ;
16+ } ;
17+ } ;
518
619export const collections = {
720 docs : defineCollection ( {
@@ -18,18 +31,12 @@ export const collections = {
1831 } ) ,
1932 } ) ,
2033 "adventure-releases" : defineCollection ( {
21- loader : feedLoader ( {
22- url : "https://github.com/PaperMC/adventure/releases.atom" ,
23- } ) ,
34+ loader : feedLoader ( "https://github.com/PaperMC/adventure/releases.atom" ) ,
2435 } ) ,
2536 "adventure-platform-releases" : defineCollection ( {
26- loader : feedLoader ( {
27- url : "https://github.com/PaperMC/adventure-platform/releases.atom" ,
28- } ) ,
37+ loader : feedLoader ( "https://github.com/PaperMC/adventure-platform/releases.atom" ) ,
2938 } ) ,
3039 "adventure-platform-mod-releases" : defineCollection ( {
31- loader : feedLoader ( {
32- url : "https://github.com/PaperMC/adventure-platform-mod/releases.atom" ,
33- } ) ,
40+ loader : feedLoader ( "https://github.com/PaperMC/adventure-platform-mod/releases.atom" ) ,
3441 } ) ,
3542} ;
0 commit comments