rss-emitter-ts
Version:
Emit rss feed items, written in TypeScript
90 lines (89 loc) • 2.22 kB
TypeScript
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;