mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-01 12:19:29 +08:00
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import type { RequestHandler } from '@sveltejs/kit'
|
|
import { site } from '$lib/config/site'
|
|
import { feed } from '$lib/config/general'
|
|
import { favicon, any } from '$lib/config/icon'
|
|
import { genPosts } from '$lib/utils/posts'
|
|
|
|
const render = async (posts = genPosts({ postHtml: true, postLimit: feed.limit, filterUnlisted: true })) => ({
|
|
version: 'https://jsonfeed.org/version/1.1',
|
|
title: site.title,
|
|
home_page_url: site.protocol + site.domain,
|
|
feed_url: site.protocol + site.domain + '/feed.json',
|
|
description: site.description,
|
|
icon: any['512'].src ?? any['192'].src,
|
|
favicon: favicon?.src,
|
|
authors: [
|
|
{
|
|
name: site.author.name,
|
|
url: site.protocol + site.domain,
|
|
avatar: site.author.avatar
|
|
}
|
|
],
|
|
language: site.lang ?? 'en',
|
|
hubs: feed.hubs?.map(hub => ({
|
|
type: 'WebSub',
|
|
url: hub
|
|
})),
|
|
items: posts.map(post => ({
|
|
id: post.path.slice(1),
|
|
url: site.protocol + site.domain + post.path,
|
|
title: post.title,
|
|
content_html: post.html,
|
|
summary: post['summary'],
|
|
image: post['image'],
|
|
date_published: post.published ?? post.created,
|
|
date_modified: post.updated ?? post.published ?? post.created,
|
|
tags: post.tags,
|
|
_indieweb: {
|
|
type: post.type,
|
|
'in-reply-to': post.in_reply_to
|
|
}
|
|
}))
|
|
})
|
|
|
|
export const GET: RequestHandler = async () => ({
|
|
headers: {
|
|
'Content-Type': 'application/feed+json; charset=utf-8'
|
|
},
|
|
body: JSON.stringify(await render(), null, 2)
|
|
})
|