feed-watch
Version:
A highly configurable lightweight module for watching/emitting changes in rss feeds
48 lines (47 loc) • 1.29 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { FeedParserOptions, AxiosRequestConfig } from './modules/FeedParser';
export interface FeedItem {
title: string;
description: string;
summary: string;
date: Date | null;
pubdate: Date | null;
link: string;
origlink: string;
author: string;
guid: string;
comments: string;
[x: string]: any;
}
export interface FeedItemEvent {
feed: {
name: string;
url: string;
};
item: FeedItem;
}
export interface FeedConfig {
name: string;
url: string;
refreshRateInSecs?: number;
skipInitialList?: boolean;
uidGenerator?: (item: FeedItem) => string;
parserOpts?: FeedParserOptions;
requestOpts?: AxiosRequestConfig;
}
declare type Feed = {
timer?: NodeJS.Timer;
config: FeedConfig;
lastUid: string;
};
export default class FeedWatch extends EventEmitter {
private feedList;
fetchAndUpdateItems(feed: Feed, isInitialRun?: boolean): Promise<void>;
initFeed(config: FeedConfig): Promise<void>;
add({ name, url, skipInitialList, refreshRateInSecs, uidGenerator, requestOpts, parserOpts, }: FeedConfig): void;
remove(url: string): void;
destroy(): void;
list(): FeedConfig[];
}
export {};