{"repo":"otnc/hono-feed","free":true,"listed":false,"github":"https://github.com/otnc/hono-feed","clone":"git clone https://github.com/otnc/hono-feed.git","description":"RSS, Atom and JSON Feed for Hono — done right.","language":"TypeScript","stars":26,"topics":["atom","feed","hono","json-feed","rss","rss-feed","xml","atom-feed","honojs"],"license":"MIT","category":"productivity","readme_excerpt":"RSS, Atom and JSON Feed for Hono — done right. Serving a feed sounds simple, but the details bite: dates have to be in the exact format each spec wants, text has to be XML-escaped, conditional requests should return 304 , and readers ask for different formats through the Accept header. hono-feed takes care of all of that. You describe your feed once; it returns a correct HTTP Response . [!NOTE] Zero runtime dependencies, built on Web Standards alone — so it runs anywhere Hono does: Cloudflare Workers, Deno, Bun and Node. hono itself is a peer dependency ( =4 ). Why hono-feed? Hono ships no feed helper, so you have two usual options — hand-roll the XML, or pull in a general feed library and wire the HTTP layer around it. hono-feed replaces both. vs. hand-rolling the XML It breaks the first time a title contains & or / s-maxage= mustRevalidate / proxyRevalidate must-revalidate / proxy-revalidate immutable immutable staleWhileRevalidate / staleIfError stale-while-revalidate= / stale-if-error= false still omits the header entirely, same as always. The object form is recommended when the fields cover what you need — it can't typo a directive name or forget a comma. The raw string isn't deprecated, though: it's the header's own native shape, and it's still the way to reach directives (or vendor extensions) CacheControlDirectives doesn't model yet. Both forms are first-class and neither is going away. Skipping work on a 304 By default, answering a conditional request still costs a f","default_branch":null,"files":null,"tree":[],"storefront":"/r/otnc","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/otnc/hono-feed/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}