Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
205 commits
Select commit Hold shift + click to select a range
5c0e224
feat: Implement detailed Text/Content constructs for fields in Atom feed
macieklamberski Jun 24, 2025
5a44bd3
Merge branch 'main' into feat/atom-text-content-constructs
macieklamberski Jun 27, 2025
4f276a5
style: Unify formatting of the Text/Content structure tests
macieklamberski Jun 27, 2025
302728f
Merge branch 'next' into feat/atom-text-content-constructs
macieklamberski Jul 30, 2025
6a0215e
feat!: Make RSS <source @url> attribute required following the spec
macieklamberski Oct 29, 2025
a48f582
feat: Simplify all generate functions by making all fields optional
macieklamberski Dec 1, 2025
201a632
feat: Remove lenient mode and always accept Date | string in generate…
macieklamberski Dec 1, 2025
381a24d
Merge branch 'main' into feat/remove-requirements
macieklamberski Dec 2, 2025
2e7d762
chore: Remove required fields from the new podcast:image tag
macieklamberski Dec 2, 2025
45470b2
chore: Mark source.url field as required by spec
macieklamberski Dec 2, 2025
fa8dc9e
refactor: Simplify the type definition
macieklamberski Jan 4, 2026
c8e8536
refactor: Remove redundant DeepPartial usage
macieklamberski Jan 4, 2026
02d430d
Merge branch 'main' into feat/remove-requirements
macieklamberski Jan 4, 2026
3d5f32b
Merge branch 'feat/remove-requirements' into feat/remove-lenient-mode
macieklamberski Jan 4, 2026
9ef6d6d
feat!: Remove DeepPartial type
macieklamberski Jan 5, 2026
f90d15f
refactor: Remove strict/lenient mode from generate functions
macieklamberski Jan 5, 2026
70d25c6
Merge branch 'feat/remove-requirements' into feat/remove-deep-partial
macieklamberski Jan 5, 2026
62d4407
Merge pull request #212 from macieklamberski/feat/remove-deep-partial
macieklamberski Jan 5, 2026
488757c
Merge branch 'feat/remove-requirements' into feat/remove-lenient-mode
macieklamberski Jan 5, 2026
e28557e
Merge pull request #196 from macieklamberski/feat/remove-requirements
macieklamberski Jan 5, 2026
3fa42ea
Merge branch 'next' into feat/remove-lenient-mode
macieklamberski Jan 5, 2026
67d8dd3
Merge pull request #197 from macieklamberski/feat/remove-lenient-mode
macieklamberski Jan 5, 2026
7de81ff
feat: Add strict mode for compile-time validation of spec-required fi…
macieklamberski Jan 6, 2026
eeb5dcb
fix: Make RDF Image url required per RSS 1.0 spec
macieklamberski Jan 6, 2026
cdaaca3
feat: Add title attr to podcast namespace RemoteItem per spec
macieklamberski Jan 6, 2026
bf53c39
fix: Make rawvoice namespace fields required per spec
macieklamberski Jan 6, 2026
a020e88
Merge branch 'main' into next
macieklamberski Jan 6, 2026
da29499
Merge branch 'next' into fix/rawvoice-requirement-fixes
macieklamberski Jan 6, 2026
aebb28f
Merge remote-tracking branch 'origin/next' into feat/add-strict-mode
macieklamberski Jan 6, 2026
5bceb4f
Merge branch 'feat/add-strict-mode' into fix/rawvoice-requirement-fixes
macieklamberski Jan 6, 2026
80d3b37
chore: Add strict mode support to rawvoice namespace types
macieklamberski Jan 6, 2026
8bedc5f
Merge pull request #215 from macieklamberski/fix/rawvoice-requirement…
macieklamberski Jan 6, 2026
8595de9
Merge branch 'feat/add-strict-mode' into feat/rss-source-url-required
macieklamberski Jan 6, 2026
9492413
Merge pull request #162 from macieklamberski/feat/rss-source-url-requ…
macieklamberski Jan 6, 2026
15c9339
docs: Add migration guide for 2.x to 3.x
macieklamberski Jan 6, 2026
0008fd1
Merge branch 'next' into feat/add-strict-mode
macieklamberski Jan 6, 2026
b0791ca
docs: Add note about strict mode to migration guide
macieklamberski Jan 7, 2026
84e8b15
feat: Add XML namespace support for Atom feeds
macieklamberski Jan 7, 2026
88d69c3
feat: Add XML namespace support for RSS and RDF feeds
macieklamberski Jan 7, 2026
fdac81a
refactor: Reorder XML namespace tests
macieklamberski Jan 7, 2026
33f167c
refactor: Remove redundant type export from xml namespace
macieklamberski Jan 7, 2026
2b938a2
refactor: Fix test style consistency in RSS parse tests
macieklamberski Jan 7, 2026
a11ebdb
docs: Add XML namespace documentation
macieklamberski Jan 7, 2026
26b79b3
Merge next into feat/atom-text-content-constructs
macieklamberski Jan 7, 2026
eb571ac
Merge branch 'main' into next
macieklamberski Jan 7, 2026
7f33bc7
Merge branch 'main' into next
macieklamberski Jan 7, 2026
d7f768f
Merge branch 'next' into feat/xml-ns
macieklamberski Jan 7, 2026
083bcb0
Merge branch 'next' into feat/add-strict-mode
macieklamberski Jan 7, 2026
cb3b044
docs: Centralize type parameter docs in TypeScript reference
macieklamberski Jan 7, 2026
b29dd45
docs: Clarify the strict mode more
macieklamberski Jan 7, 2026
b31259a
docs: Update copy
macieklamberski Jan 7, 2026
ad6160a
Merge pull request #217 from macieklamberski/feat/add-strict-mode
macieklamberski Jan 7, 2026
609fd0c
Merge branch 'next' into feat/xml-ns
macieklamberski Jan 7, 2026
a7d8284
refactor: Remove deprecated generateArrayOrSingular helpers
macieklamberski Jan 10, 2026
f57d82f
feat!: Remove deprecated fields from DC namespace
macieklamberski Jan 10, 2026
4ece912
feat!: Remove deprecated fields from DC Terms namespace
macieklamberski Jan 10, 2026
e9bbd55
feat!: Remove deprecated fields from Podcast namespace
macieklamberski Jan 10, 2026
f98b95b
feat!: Remove deprecated fields from Media namespace
macieklamberski Jan 10, 2026
f754462
docs: Add migration point about the Media ns changes
macieklamberski Jan 11, 2026
8661ecd
docs: Add migration point about the Podcast ns changes
macieklamberski Jan 11, 2026
4c5f330
docs: Add migration point about the Dublin Core Terms ns changes
macieklamberski Jan 11, 2026
45db074
docs: Add migration point about the Dublin Core ns changes
macieklamberski Jan 11, 2026
ff444dc
refactor: Remove redundant ternary for podcast:chat generation
macieklamberski Jan 11, 2026
a5c9a23
docs: Clarify fields that kept name but changed to array
macieklamberski Jan 11, 2026
94fb6a3
docs: Clarify fields that kept name but changed to array
macieklamberski Jan 11, 2026
8da241b
docs: Clarify Podcast ns migration with spec reasoning
macieklamberski Jan 11, 2026
5dcdeb2
docs: Clarify Media ns migration with spec reasoning
macieklamberski Jan 11, 2026
4dfa651
Merge pull request #222 from macieklamberski/feat/media-plural-breaking
macieklamberski Jan 11, 2026
51b7fe7
Merge branch 'next' into feat/podcast-plural-breaking
macieklamberski Jan 11, 2026
1f37099
Merge pull request #226 from macieklamberski/feat/podcast-plural-brea…
macieklamberski Jan 11, 2026
bf4c762
Merge branch 'next' into feat/dc-plural-breaking
macieklamberski Jan 11, 2026
1a70df2
Merge branch 'next' into feat/dc-plural-breaking
macieklamberski Jan 11, 2026
1e8af1b
Merge branch 'feat/dc-plural-breaking' into feat/dcterms-plural-breaking
macieklamberski Jan 11, 2026
590b6dd
docs: Improve SEO with custom titles and sitemap
macieklamberski Jan 13, 2026
62e66cf
docs: Add versions dropdown
macieklamberski Jan 13, 2026
491237f
docs: Add canonical URL meta tag
macieklamberski Jan 13, 2026
1c292f7
chore: Update packages
macieklamberski Jan 13, 2026
2cc9572
Merge remote-tracking branch 'origin/main' into next
macieklamberski Jan 13, 2026
1d56d0a
test: Add xml namespace integration tests and reference files
macieklamberski Jan 16, 2026
d8d315c
docs: Update the order in which the XML namespace is placed
macieklamberski Jan 16, 2026
fa4497e
docs: Update XML namespace reference description
macieklamberski Jan 16, 2026
55c5c71
Merge branch 'next' into feat/xml-ns
macieklamberski Jan 16, 2026
59dab90
Merge pull request #218 from macieklamberski/feat/xml-ns
macieklamberski Jan 16, 2026
8d00e2e
Merge next into feat/atom-text-content-constructs
macieklamberski Jan 18, 2026
e4f1b2e
feat!: Move types to main entry point for simpler imports
macieklamberski Jan 19, 2026
e428953
docs: Update migration guide
macieklamberski Jan 19, 2026
5301c25
Merge pull request #231 from macieklamberski/feat/simplify-types
macieklamberski Jan 19, 2026
dcb7d22
Merge branch 'next' into feat/dc-plural-breaking
macieklamberski Jan 20, 2026
da3f6aa
Merge branch 'next' into feat/dcterms-plural-breaking
macieklamberski Jan 20, 2026
c92b549
Merge branch 'feat/dc-plural-breaking' into feat/dcterms-plural-breaking
macieklamberski Jan 20, 2026
bc779bc
Merge branch 'feat/dcterms-plural-breaking' into refactor/remove-depr…
macieklamberski Jan 20, 2026
ed9dfcd
Merge pull request #223 from macieklamberski/feat/dc-plural-breaking
macieklamberski Jan 20, 2026
2780cd9
style: Reorder DC Terms fields to match the order everywhere
macieklamberski Jan 20, 2026
ba688fd
Merge pull request #224 from macieklamberski/feat/dcterms-plural-brea…
macieklamberski Jan 20, 2026
d349e56
Merge pull request #225 from macieklamberski/refactor/remove-deprecat…
macieklamberski Jan 20, 2026
8eb30e2
docs: Add type imports change to migration checklist
macieklamberski Jan 19, 2026
a3e4135
Merge branch 'main' into next
macieklamberski Jan 21, 2026
44b97bc
Merge branch 'main' into next
macieklamberski Jan 21, 2026
6de05b6
feat: Add support for importing feed namespace types
macieklamberski Jan 24, 2026
adbb306
Merge pull request #236 from macieklamberski/feat/namespace-types
macieklamberski Jan 24, 2026
a5e3f9b
refactor: Rename Dcterms to DcTerms in function aliases
macieklamberski Jan 24, 2026
0180062
feat: Export DateLike and XmlStylesheet utility types
macieklamberski Feb 5, 2026
2f8969f
Merge branch 'main' into next
macieklamberski Feb 7, 2026
820c3a9
Merge branch 'main' into next
macieklamberski Feb 7, 2026
6a7dd5f
refactor: Rename A to TExtra generic type in OPML types
macieklamberski Feb 10, 2026
d370a4b
refactor: Rename generic types in common types
macieklamberski Feb 10, 2026
0c9a78f
Merge pull request #246 from macieklamberski/refactor/rename-types
macieklamberski Feb 10, 2026
f2f3f3a
Merge pull request #247 from macieklamberski/refactor/rename-common-t…
macieklamberski Feb 10, 2026
83efbfa
feat: Add parseDateFn option for custom date parsing
macieklamberski Feb 10, 2026
5f82f62
refactor: Standardize internal type naming to [Verb][Category][Qualif…
macieklamberski Feb 10, 2026
f4834e2
Merge pull request #249 from macieklamberski/feat/type-renaming
macieklamberski Feb 10, 2026
8969a12
refactor: Remove unnecessary type parameter defaults
macieklamberski Feb 10, 2026
091389a
Merge branch 'main' into next
macieklamberski Feb 10, 2026
1dd1857
Merge remote-tracking branch 'origin/next' into next
macieklamberski Feb 10, 2026
4114a7f
Merge branch 'next' into feat/atom-text-content-constructs
macieklamberski Feb 10, 2026
bb256c1
refactor: Add xml namespace support to Atom text/content constructs, …
macieklamberski Feb 10, 2026
2d0b83f
refactor: Remove text construct, keep only content construct
macieklamberski Feb 10, 2026
d65f775
refactor: Update formatting
macieklamberski Feb 11, 2026
3258099
feat: Add text construct support for Atom text fields
macieklamberski Feb 10, 2026
18404ed
docs: Add Atom content construct migration note
macieklamberski Feb 11, 2026
938aff3
test: Add whitespace-only string test for parseContent
macieklamberski Feb 11, 2026
9d08c74
Merge pull request #219 from macieklamberski/feat/atom-text-content-c…
macieklamberski Feb 11, 2026
8f4dfa1
Merge branch 'next' into feat/date-parsing
macieklamberski Feb 11, 2026
2697125
test: Add parseDateFn integration tests for namespace dates
macieklamberski Feb 11, 2026
0901348
docs: Document parseDateFn option and add to migration guide
macieklamberski Feb 11, 2026
4e6e195
Merge branch 'next' into feat/atom-text-constructs
macieklamberski Feb 13, 2026
de34d4b
chore: Remove unnecessary type assertions
macieklamberski Feb 13, 2026
05b37f7
docs: Simplify date parsing page intro, remove common issues section
macieklamberski Feb 13, 2026
4cfab6b
docs: Update error handling section in Date Parsing page
macieklamberski Feb 13, 2026
04e16ae
Merge pull request #248 from macieklamberski/feat/date-parsing
macieklamberski Feb 13, 2026
f0d1c78
Merge branch 'next' into feat/atom-text-constructs
macieklamberski Feb 13, 2026
452cf7c
docs: Add text construct migration section
macieklamberski Feb 13, 2026
9857295
Merge pull request #250 from macieklamberski/feat/atom-text-constructs
macieklamberski Feb 13, 2026
0dec4df
docs: Shorten the sentence
macieklamberski Feb 25, 2026
824daae
Merge remote-tracking branch 'origin/next' into next
macieklamberski Feb 25, 2026
cafe97d
Merge branch 'main' into next
macieklamberski Mar 14, 2026
d4c1213
chore: Adapt main's merge to next's API
macieklamberski Mar 14, 2026
0646453
Merge pull request #268 from macieklamberski/chore/merge-main
macieklamberski Mar 14, 2026
3c57b8d
feat: Replace generic Error with DetectError and ParseError in parsers
macieklamberski Mar 15, 2026
ccb9300
feat: Add MalformedError and GenerateError, rename ParseError semantics
macieklamberski Mar 15, 2026
546ad37
refactor: Split ParseError into MalformedError and ParseError in parsers
macieklamberski Mar 15, 2026
93c06d9
feat: Replace generic Error with GenerateError in generators
macieklamberski Mar 15, 2026
50ba237
test: Add error type tests for all parsers and generators
macieklamberski Mar 15, 2026
f90359c
docs: Update error handling documentation
macieklamberski Mar 15, 2026
7262eca
feat: Add GenerateError to JSON feed generator
macieklamberski Mar 15, 2026
768abe9
fix: Improve error type test consistency
macieklamberski Mar 15, 2026
ccd61e7
Merge pull request #269 from macieklamberski/feat/error-types
macieklamberski Mar 15, 2026
94716b6
docs: Clarify error handling across all generators and error hierarchy
macieklamberski Mar 15, 2026
9a9d2ad
Merge pull request #270 from macieklamberski/feat/json-generate-error
macieklamberski Mar 15, 2026
a815dab
test: Add non-object input test for JSON generateFeed
macieklamberski Mar 15, 2026
3ced50b
Merge branch 'main' into next
macieklamberski Mar 15, 2026
17aaece
Merge branch 'main' into next
macieklamberski Mar 15, 2026
ab22e9a
feat: Convert RSS person fields from strings to structured objects
macieklamberski Mar 15, 2026
3287de2
test: Add comprehensive tests for RSS person parsing and generation
macieklamberski Mar 15, 2026
d17d1f6
refactor: Update RSS reference files for structured person objects
macieklamberski Mar 15, 2026
e238e7b
docs: Update docs for RSS person fields string-to-object change
macieklamberski Mar 16, 2026
b33637b
refactor: Optimize parsePerson with state-machine bracket decomposition
macieklamberski Mar 16, 2026
ace0dba
Merge branch 'main' into next
macieklamberski Mar 23, 2026
37302a9
docs: Move migration checklists above breaking changes
macieklamberski Mar 25, 2026
0fae731
docs: Use v3 domain instead of next
macieklamberski Mar 25, 2026
40bb862
chore: Merge main and remove next version notes
macieklamberski Mar 25, 2026
36808de
chore: Update packages
macieklamberski Mar 25, 2026
63f315b
Merge branch 'main' into next
macieklamberski Mar 25, 2026
8d666e4
docs: Fix incorrect skipHours mention in person fields section
macieklamberski Mar 25, 2026
3d0d1f5
docs: Fix Atom title and content examples for v3 object syntax
macieklamberski Mar 25, 2026
6de073d
docs: Add parse-only comment to Person.link and authors to parsing ex…
macieklamberski Mar 25, 2026
4322dbe
test: Add RFC 2822 tests for feed-level person fields
macieklamberski Mar 25, 2026
ea0c59b
Merge pull request #280 from macieklamberski/docs/fix-atom-examples
macieklamberski Mar 25, 2026
f9358b1
Merge branch 'main' into next
macieklamberski Apr 3, 2026
e73af72
Merge branch 'main' into next
macieklamberski Apr 3, 2026
5a68994
Merge branch 'main' into next
macieklamberski Apr 3, 2026
e0e8efa
Merge branch 'main' into next
macieklamberski Apr 3, 2026
df4c1a8
Merge branch 'main' into next
macieklamberski Apr 3, 2026
92254c8
Merge branch 'main' into next
macieklamberski Apr 3, 2026
0a66179
Merge branch 'next' into feat/detailed-rss-author
macieklamberski Apr 4, 2026
ba53cc6
fix: Allow @ in URL pattern and check URLs before emails
macieklamberski Apr 4, 2026
f7e4606
refactor: Fix lint issues and standardize regex naming in parsePerson
macieklamberski Apr 4, 2026
7112546
fix: Handle nested and unmatched brackets in parsePerson
macieklamberski Apr 4, 2026
e12ca07
test: Add integration parse tests for managingEditor and webMaster
macieklamberski Apr 4, 2026
e51119e
refactor: Extract parseBracketedPerson from parsePerson
macieklamberski Apr 4, 2026
43199c8
refactor: Extract parseSimplePerson from parsePerson
macieklamberski Apr 4, 2026
5e639db
docs: Add step comments to parsePerson dispatch logic
macieklamberski Apr 4, 2026
4555403
test: Add generatePerson tests for ambiguous parenthesized and angle-…
macieklamberski Apr 4, 2026
aced0c2
test: Add CDATA person end-to-end XML generate test
macieklamberski Apr 4, 2026
d5ee9a0
test: Add Unicode and international character tests for parsePerson
macieklamberski Apr 4, 2026
b8a815c
Merge pull request #271 from macieklamberski/feat/detailed-rss-author
macieklamberski Apr 4, 2026
5cad147
test: Add parsePerson test for invalid email-like string
macieklamberski Apr 4, 2026
67b26e9
fix: Strip mailto query params and separator artifacts in parsePerson
macieklamberski Apr 4, 2026
91ac108
test: Add stripMailto unit tests
macieklamberski Apr 4, 2026
c8d3d7c
Merge branch 'main' into beta
macieklamberski Apr 10, 2026
b8c6780
Merge branch 'main' into beta
macieklamberski Apr 10, 2026
09598ee
Merge branch 'main' into beta
macieklamberski Apr 13, 2026
ece0dcb
Merge branch 'main' into beta
macieklamberski Apr 22, 2026
fc4c838
Merge branch 'main' into beta
macieklamberski Apr 26, 2026
2cc446c
docs: Update head config
macieklamberski Apr 26, 2026
9cc6aa3
Merge branch 'main' into beta
macieklamberski Apr 30, 2026
a6969d3
chore: Update benchmark packages
macieklamberski May 1, 2026
abe7bbc
refactor: Rename feed namespace types and parseFeed for clarity
macieklamberski May 8, 2026
578352c
refactor: Restore parse name in common/parse.ts, alias at re-export
macieklamberski May 8, 2026
8443340
docs: Trim redundant lines from v2-to-v3 migration
macieklamberski May 8, 2026
4b9ddd3
refactor: Consolidate deprecated aliases in src/index.ts
macieklamberski May 8, 2026
618506b
refactor: Keep parseFeed canonical, export AnyFeed type
macieklamberski May 15, 2026
7ced8ed
Merge pull request #297 from macieklamberski/refactor/update-types
macieklamberski May 15, 2026
12e17b6
Merge branch 'main' into beta
macieklamberski May 15, 2026
7a5abcc
feat: Add RssFeed/AtomFeed/JsonFeed/RdfFeed namespaces and AnyFeed type
macieklamberski May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 3 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,6 @@ Feedsmith offers universal and format‑specific parsers that maintain the origi

---

> [!IMPORTANT]
> **Feedsmith 3.x is in final stages of development.** Check out the [v3.x guide](https://v3.feedsmith.dev/migration/v2-to-v3) to explore new features and learn how to upgrade. Install it with:
>
> `npm install feedsmith@next`

---

## Features

### Core
Expand Down Expand Up @@ -53,7 +46,7 @@ Feedsmith offers universal and format‑specific parsers that maintain the origi

## Supported Formats

Feedsmith aims to fully support all major feed formats and namespaces in complete alignment with their specifications.
Feedsmith aims to fully support all major feed formats and namespaces in complete alignment with their specs.

✅ Available
&nbsp;&nbsp;·&nbsp;&nbsp;
Expand Down Expand Up @@ -112,6 +105,7 @@ Feedsmith aims to fully support all major feed formats and namespaces in complet
| [W3C Basic Geo](https://feedsmith.dev/reference/namespaces/geo) | `<geo:*>` | RSS, Atom | ✅ | ✅ |
| [GeoRSS Simple](https://feedsmith.dev/reference/namespaces/georss) | `<georss:*>` | RSS, Atom, RDF | ✅ | ✅ |
| [RDF](https://feedsmith.dev/reference/namespaces/rdf) | `<rdf:*>` | RDF | ✅ | ✅ |
| [XML](https://feedsmith.dev/reference/namespaces/xml) | `<xml:*>` | RSS, Atom, RDF | ✅ | ✅ |

## Quick Start

Expand Down Expand Up @@ -231,7 +225,7 @@ try {
Feedsmith provides comprehensive TypeScript types for all feed formats:

```typescript
import type { Rss, Atom, Json, Opml } from 'feedsmith/types'
import type { Rss, Atom, Json, Opml } from 'feedsmith'

// Access all types for a format
type Feed = Rss.Feed
Expand Down
10 changes: 5 additions & 5 deletions benchmarks/javascript/bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions benchmarks/javascript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
"benchmark": "^2.1.4",
"feedme": "^2.0.2",
"feedparser": "^2.3.1",
"feedsmith": "2.9.3",
"feedsmith": "2.9.4",
"node-opml-parser": "^1.0.0",
"opml": "^0.5.8",
"opml-generator": "^1.1.1",
"opml-to-json": "^1.0.1",
"opmlparser": "^0.8.0",
"podcast-feed-parser": "^1.0.4",
"rss-parser": "^3.13.0",
"tinybench": "^6.0.0"
"tinybench": "^6.0.1"
},
"devDependencies": {
"@types/benchmark": "^2.1.5",
Expand Down
10 changes: 1 addition & 9 deletions compatibility/bundler/esm/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/cjs-package/index.cts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/cjs-package/index.mts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/esm-package/index.cts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/esm-package/index.mts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/mixed-package/index.cts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/mixed-package/index.mts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/explicit-modules/mixed-package/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/typescript/legacy-cjs/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// biome-ignore lint/style/noCommonJs: This file tests CJS compatibility.
const { generateRssFeed, parseFeed } = require('feedsmith')

import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'
import type { Rss } from 'feedsmith'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -22,11 +21,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/typescript/modern-cjs/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
10 changes: 1 addition & 9 deletions compatibility/typescript/modern-esm/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { RssFeed } from 'feedsmith'
import type { Rss } from 'feedsmith'
import { generateRssFeed, parseFeed } from 'feedsmith'
import type { Rss } from 'feedsmith/types'

const rssXml = `<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
Expand All @@ -20,11 +19,4 @@ const feedData: Rss.Feed<Date> = {
items: [],
}

const _legacyFeedData: RssFeed<Date> = {
title: 'Legacy Type',
link: 'https://example.com',
description: 'Legacy description',
items: [],
}

const _generatedRss = generateRssFeed(feedData)
14 changes: 10 additions & 4 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ export default defineConfig({
{ text: 'Parsing', link: '/parsing' },
{ text: 'Generating', link: '/generating' },
{
text: 'v2.x',
items: [{ text: 'v3.x (Next)', link: 'https://v3.feedsmith.dev' }],
text: 'v3.0 (Next)',
items: [{ text: 'v2.0', link: 'https://feedsmith.dev' }],
},
],
sidebar: [
Expand All @@ -75,6 +75,7 @@ export default defineConfig({
{ text: 'Namespaces', link: '/parsing/namespaces' },
{ text: 'Dates', link: '/parsing/dates' },
{ text: 'Detecting', link: '/parsing/detecting' },
{ text: 'Errors', link: '/parsing/errors' },
{ text: 'Examples', link: '/parsing/examples' },
],
},
Expand All @@ -83,7 +84,8 @@ export default defineConfig({
items: [
{ text: 'Overview', link: '/generating' },
{ text: 'Styling', link: '/generating/styling' },
{ text: 'Lenient Mode', link: '/generating/lenient-mode' },
{ text: 'Strict Mode', link: '/generating/strict-mode' },
{ text: 'Errors', link: '/generating/errors' },
{ text: 'Examples', link: '/generating/examples' },
],
},
Expand Down Expand Up @@ -140,6 +142,7 @@ export default defineConfig({
{ text: 'W3C Basic Geo', link: '/reference/namespaces/geo' },
{ text: 'GeoRSS Simple', link: '/reference/namespaces/georss' },
{ text: 'RDF', link: '/reference/namespaces/rdf' },
{ text: 'XML', link: '/reference/namespaces/xml' },
],
},
{
Expand All @@ -154,7 +157,10 @@ export default defineConfig({
},
{
text: 'Migration',
items: [{ text: 'From 1.x to 2.x', link: '/migration/v1-to-v2' }],
items: [
{ text: 'From 2.x to 3.x', link: '/migration/v2-to-v3' },
{ text: 'From 1.x to 2.x', link: '/migration/v1-to-v2' },
],
},
],
search: {
Expand Down
6 changes: 1 addition & 5 deletions docs/generating.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ title: Generating Feeds

# Generating Feeds

Create RSS, Atom, JSON Feed, and OPML files with full namespace support.

## Overview

Feed generation is straightforward - provide the feed data and get back a properly formatted string:
Create RSS, Atom, JSON Feed, and OPML files with full namespace support. Just provide the feed data and get back a properly formatted string:

```typescript
import {
Expand Down
Loading
Loading