{"_id":"@astronautlabs/rss","name":"@astronautlabs/rss","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@astronautlabs/rss","version":"1.0.0","description":"An implementation of Really Simple Syndication","keywords":["xml","rss","feeds","feed"],"license":"MIT","author":{"name":"Astronaut Labs, LLC."},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist.esm/index.js","scripts":{"build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -b","build:esm":"tsc -b tsconfig.esm.json"},"dependencies":{"@astronautlabs/xml":"^0.0.6","jsdom":"^28.1.0"},"gitHead":"03db748eddc8059938c538748a3e666d7f21345e","_id":"@astronautlabs/rss@1.0.0","_nodeVersion":"20.19.4","_npmVersion":"11.9.0","dist":{"integrity":"sha512-vXsmsVGhXVpW46tCjtCUwskVpRQ3L2hl339fcFEN9lMHet7Fg6PjXOFFszR/S2WXaIAC7u6ZVhXe/jQOri4ivw==","shasum":"3ee579271c2cce818ed20315a5c5e7d9d83a3793","tarball":"https://registry.npmjs.org/@astronautlabs/rss/-/rss-1.0.0.tgz","fileCount":17,"unpackedSize":76348,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDBUG4T1qgyuf9dbzlcENXumKABpYaCoVNvHlUHeUAEdQIgLXnMNhhjtDziWQJT5ORkdjSDJ1d/wGbnDSIloMhzK98="}]},"_npmUser":{"name":"rezonant","email":"wilahti@gmail.com"},"directories":{},"maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rss_1.0.0_1771987083847_0.24171497349816562"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T02:38:03.846Z","1.0.0":"2026-02-25T02:38:03.995Z","modified":"2026-02-25T02:38:04.383Z"},"maintainers":[{"name":"rezonant","email":"wilahti@gmail.com"}],"description":"An implementation of Really Simple Syndication","keywords":["xml","rss","feeds","feed"],"author":{"name":"Astronaut Labs, LLC."},"license":"MIT","readme":"# @/rss\r\n\r\nSupport for Really Simple Syndication (RSS).\r\n\r\n```shell\r\nnpm install @astronautlabs/rss\r\n```\r\n\r\nParsing RSS:\r\n\r\n```typescript\r\nimport { RssSerializer } from '@astronautlabs/rss';\r\n\r\nlet feed = RssSerializer.parse(`<?xml version=\"1.0\"?><rss><channel>...`);\r\nconsole.log(feed.channel.title);\r\nfor (let item of feed.items) {\r\n    console.log(` - ${item.title}`);\r\n}\r\n```\r\n\r\nRendering RSS:\r\n\r\n```typescript\r\nimport { RssSerializer } from '@astronautlabs/rss';\r\n\r\nlet xmlString = RssSerializer.stringify({\r\n    channel: {\r\n        title: `My Feed`,\r\n        // ...\r\n    },\r\n    items: [\r\n        {\r\n            title: `My item`,\r\n            // ...\r\n        }\r\n    ]\r\n});\r\n```\r\n\r\n# Custom Serializers\r\n\r\nThere are many formats which extend RSS. You can use this library to \r\nparse those formats with `createCustomSerializer`:\r\n\r\n```typescript\r\n\r\nimport * as rss from '@astronautlabs/rss';\r\n\r\nexport interface MyChannel extends rss.Chanenl {\r\n    blueskyProfile?: string;\r\n}\r\n\r\nexport interface MyItem extends rss.Item {\r\n    blueskyPost?: string;\r\n}\r\n\r\nconst MySerializer = rss.createCustomSerializer<MyChannel, MyItem>({\r\n    parseChannel: el => ({\r\n        ...rss.parseRssChannel(el),\r\n        blueskyProfile: el.child('blueskyProfile').bind(x => x.text()).optional()\r\n    }),\r\n    appendChannel: (parent, channel) => {\r\n        let element = rss.appendRssChannel(parent, channel);\r\n        rss.appendSimpleElement(element, 'blueskyProfile', channel.blueskyProfile);\r\n        return element;\r\n    },\r\n    parseItem: el => ({\r\n        ...rss.parseRssItem(el),\r\n        blueskyPost: el.child('blueskyPost').bind(x => x.text()).optional()\r\n    }),\r\n    appendItem: (parent, item) => {\r\n        let element = rss.appendRssItem(parent, item);\r\n        rss.appendSimpleElement(element, 'blueskyPost', item.blueskyPost);\r\n        return element;\r\n    }\r\n});\r\n\r\nlet feed = MySerializer.parse(`<?xml version=\"1.0\"?><rss>....`);\r\n//  ^- Feed<MyChannel, MyItem>\r\n\r\n```\r\n\r\nThe `el` object is a `DomNavigator<Element>` as provided by `@astronautlabs/xml`, which provides a convenient way to produce a Javascript object from a DOM tree by leveraging Monads.","readmeFilename":"README.md","_rev":"1-737de00ed1bf6a4644e0836b9547be93"}