Skip to content

Cursor

type Cursor =
| {
inclusive?: true;
type: "date";
value: string;
}
| {
max?: number;
type: "idSet";
values: readonly string[];
}
| {
type: "none";
};

A typed cursor describing how a feed resumes between syncs. The opaque Feed.cursor string is parsed into one of these (see the cursors guide, cursor types).

  • date — the feed is time-ordered and supports “since <date>” filtering (RSS, most APIs); the newest value you push becomes the next cursor. Set inclusive when the boundary item itself must be re-emitted next run (a >= comparison) rather than skipped (the default strict >).
  • idSet — the feed has no reliable date filter, so resuming means remembering which ids were already seen. values is that set (oldest first) and max is the cap on how many ids are retained — a count, not an id. Past the cap the oldest ids are evicted, which at worst re-fetches those items once and lets (feed, id) dedup absorb them.
  • none — re-fetch everything each run and rely purely on (feed, id) dedup. Always correct, just less efficient.