UNPKG

rss-emitter-ts

Version:

Emit rss feed items, written in TypeScript

90 lines (89 loc) 2.22 kB
import { Item, Meta, Image, Enclosure } from "feedparser"; import Interval from "yukikaze"; import { TinyEmitter } from "tiny-emitter"; export interface Options { userAgent?: string; debug?: boolean; } export interface FeedItem extends Item { title: string; description: string; summary: string; date: Date | null; pubdate: Date | null; link: string; origlink: string; author: string; guid: string; comments: string; image: Image; categories: string[]; enclosures: Enclosure[]; meta: Meta; [x: string]: any; } export interface FeedConfig { url: string; eventName?: string; ignoreFirst?: boolean; maxHistoryLength?: number; interval?: Interval; refresh?: number; items?: FeedItem[]; } export interface FeedData { feedUrl: string; feed?: FeedConfig; items: FeedItem[]; newItems: FeedItem[]; } export declare class FeedError extends Error { type: string; message: string; feed: string; constructor(type: string, message: string, feed?: string); } export declare class FeedEmitter extends TinyEmitter { private _feedList; private _userAgent; private _debug; private _historyLengthMultiplier; /** * Initialize the rss feed emitter * @param {Options} options */ constructor(options?: Options); /** * Add a new feed to the feed list * @param {FeedConfig} feedConfig * @returns {Array<FeedConfig>} */ add(feedConfig: FeedConfig): FeedConfig[]; /** * Get specific feed from the feedlist * @param {string} url * @returns {FeedConfig|undefined} */ get(url: string): FeedConfig | undefined; /** * Remove a feed from the feed list * @param {string} url */ remove(url: string): void; /** * List all feeds * @returns {Array<FeedConfig>} */ list(): FeedConfig[]; /** Remove all feeds */ destroy(): void; private _addOrUpdateFeedList; private _findFeed; private _removeFromFeedList; private _findItem; private _addToFeedList; private _createSetInterval; private _addItemToItemList; private _fetchFeed; } export default FeedEmitter;