* Transform modern feed item format to legacy format for backward compatibility
(item: any, feedData: any)
| 19 | * Transform modern feed item format to legacy format for backward compatibility |
| 20 | */ |
| 21 | function transformToLegacyFormat(item: any, feedData: any): LegacyItem { |
| 22 | return { |
| 23 | title: item.title, |
| 24 | description: item.description, |
| 25 | summary: item.description, // Map description to summary as well |
| 26 | date: item.published, |
| 27 | pubdate: item.published, |
| 28 | link: item.url, |
| 29 | origlink: null, |
| 30 | author: item.authors.length > 0 ? |
| 31 | `${item.authors[0]?.email || ''} (${item.authors[0]?.name || ''})` : null, |
| 32 | guid: item.id || item.url || "", |
| 33 | comments: null, |
| 34 | image: item.image ? { |
| 35 | url: item.image.url || undefined, |
| 36 | title: item.image.title || undefined |
| 37 | } : { url: undefined, title: undefined }, |
| 38 | categories: item.categories.map((cat: any) => cat.label), |
| 39 | enclosures: item.media.map((media: any) => ({ |
| 40 | url: media.url, |
| 41 | type: media.mimeType, |
| 42 | length: media.length ? String(media.length) : null, |
| 43 | })), |
| 44 | meta: { |
| 45 | "#ns": [{}], // Simplified namespace |
| 46 | "#type": feedData.meta.type as "atom" | "rss" | "rdf", |
| 47 | "#version": feedData.meta.version, |
| 48 | title: feedData.title, |
| 49 | description: feedData.description, |
| 50 | date: feedData.updated, |
| 51 | pubdate: feedData.updated, |
| 52 | link: feedData.url, |
| 53 | xmlurl: null, |
| 54 | author: feedData.authors.length > 0 ? |
| 55 | `${feedData.authors[0]?.email || ''} (${feedData.authors[0]?.name || ''})` : null, |
| 56 | language: feedData.language, |
| 57 | image: feedData.image ? { |
| 58 | url: feedData.image.url || undefined, |
| 59 | title: feedData.image.title || undefined |
| 60 | } : null, |
| 61 | favicon: null, |
| 62 | copyright: feedData.copyright, |
| 63 | generator: feedData.generator?.name || null, |
| 64 | categories: feedData.categories.map((cat: any) => cat.label), |
| 65 | } |
| 66 | }; |
| 67 | } |
| 68 | |
| 69 | export function feedLoader({ |
| 70 | url, |