@ninanfm/feed

This package is still working in progress, take your own risk to use it.

Usage no npm install needed!

<script type="module">
  import ninanfmFeed from 'https://cdn.skypack.dev/@ninanfm/feed';
</script>

README

@ninanfm/feed

This package is still working in progress, take your own risk to use it.

@ninanfm/feed is a feed generator with flexible APIs, it's designed to use with TypeORM.

Table of Contents

Supported Specifications

Quick Start

This package must to use with reflect-metadata, so you have to make sure that you have installed it.

yarn add reflect-metadata @ninanfm/feed
# or
npm i reflect-metadata @ninanfm/feed

Then add this line of code on the top of your entry file.

import 'reflect-metadata';

The next step is to define models to tell @ninanfm/feed how to generate your feed. Here, we suppose that your are using this package with TypeORM and want to generate a RSS feed for your blog.

import { RSS2_0 as RSS, xml } from '@ninanfm/feed';
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@RSS.support
@Entity()
export class Post {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    slug: string;

    @Column('text')
    @RSS.item.description
    content: string;

    @RSS.item.author
    authorName: string;

    @RSS.item.pubDate
    publishedAt: Date;

    @RSS.item.link
    @RSS.item.guid({isPermaLink: true})
    get url(): string {
        return 'https://domain/posts/' + this.slug; 
    }

    @ManyToOne(() => Blog, blog => blog.posts)
    blog: Blog;
}

@RSS.support
@Entity()
export class Blog {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    @RSS.channel.title
    title: string;

    @Column('text')
    @RSS.channel.description
    description: string;

    @Column()
    slug: string;

    @RSS.channel.link
    readonly homePageUrl = 'https://domain';

    @OneToMany(() => Post, post => post.blog)
    posts: Post[];

    toRSS(): string {
        return xml.toString(this);
    }
}

That's it, now you can call #toRSS method on Blog instance to generate RSS feed.

Predefined Models

Currently, we only defined a Podcast model, you can see the codes for Podcast model to find out how to use the advanced features of this package.

License

MIT