///
export interface Standard2RSSFormat {
header: Standard2RSSFormatHeader;
items: Standard2RSSFormatItem[];
}
export interface InjectionRSSProps {
/**
* Formatted RSS2 standard feed
*/
rss: {
header: T & Standard2RSSFormatHeader;
} & {
items: (K & Standard2RSSFormatItem)[];
};
}
export interface InjectionRSSUrlProps {
/**
* Url of resource you want to load. Make sure CORS are set up right. You can either use this param or the default one exposed on enhancer.
*/
url?: string;
/**
* Should the feed subscribe and refresh to a news interval using Time To Live param?
*/
subscribe?: boolean;
/**
* Component to display when loading
*/
loadingComponent?: () => JSX.Element;
/**
* Component to display for error state with last known contents
*/
errorComponent?: (props: {
error: any;
contents: T | null;
}) => JSX.Element;
}
export interface RSSProps extends InjectionRSSUrlProps {
requestEnhancer?: (url: string) => ({
input: RequestInfo;
init?: RequestInit;
});
headerEnhancer?: (header: any, standard: Standard2RSSFormatHeader) => T & Standard2RSSFormatHeader;
itemEnhancer?: (item: any, standard: Standard2RSSFormatItem) => K & Standard2RSSFormatItem;
children: (rss: Standard2RSSFormat & {
header: T;
} & {
items: K[];
}) => JSX.Element | null;
}
export interface Standard2RSSFormatHeader {
title: string;
image?: {
url: string;
title: string;
link: string;
width: string;
height: string;
};
link: string;
description: string;
language: string;
copyright: string;
lastBuildDate: string;
docs: string;
generator: string;
category: {
domain: string;
category: string;
};
managingEditor: string;
webMaster: string;
ttl: string;
}
export interface Standard2RSSFormatItem {
description: string;
pubDate: string;
guid: string;
title: string;
link: string;
author: string;
category: string;
comments: string;
enclosure?: {
url: string;
length: string;
type: string;
};
source?: {
url: string;
source: string;
};
}