/feed-rs

Node.js bindings for feed_rs

Primary LanguageRustMIT LicenseMIT

Fastest RSS parser in the NPM 🚀

Thanks to the power of Rust and the upstream repository authors, this package is the fastest RSS parser you can find.

Description

Feed parser for Node.js. List of supported feeds

  • RSS0
  • RSS1
  • RSS2
  • Atom
  • JSON

This package contains Node.js bindings from the Rust crate feed_rs.

I've tried to be as much compliant as possible with the original package's models. The Rust crate also contains lots of helpful comments, which I've also included in this package.

Installation

npm install @nooptoday/feed-rs

Usage

import { parse } from '@nooptoday/feed-rs'

const response = await fetch('https://nooptoday.com/rss')
const rss = await response.text()
const feed = parse(rss, 'https://nooptoday.com')

console.log(feed) // Feed Object

Error Handling

As long as the input contains valid feed data, there shouldn't be any errors. In case something goes wrong, these are all the possible errors you might encounter.

no root element
unsupported content type {mime}
missing content element {element}
unable to read feed: {reason}
unable to parse JSON: {reason}
unsupported version: {version}
unable to parse XML: {reason}

Benchmark

Test results are obtained from a local M2 Air installation.

feed-rs          2367 ops/s, ±0.39%   | fastest
fast-xml-parser  1198 ops/s, ±0.26%   | 49.39% slower
rss-parser:      125 ops/s,  ±2.27%   | slowest, 94.72% slower