Providers
Memento
MemGator's JSON TimeMap across several archives, kept outside providers.all() to avoid asking twice.
- factory
- providers.memento()
- index
- MemGator TimeMap
- reads bodies
- yes
- provider=all
- no
Load it
import { createArchive, providers } from "@agntn/archives";
const archive = createArchive(providers.memento());
const own = createArchive(providers.memento({ baseUrl: "https://memgator.example.org" }));
What it lists
snapshots reads memgator.cs.odu.edu/timemap/json/<url>, the public MemGator aggregator run by Old Dominion University. It replaced the discontinued Memento Time Travel service. Each memento becomes a page with _meta.archive set to the upstream host (archive.md, web.archive.org, arquivo.pt, …) and _meta.datetime as the TimeMap printed it. Captures dated years in the future are dropped as clock errors.
baseUrl points the provider at another aggregator that speaks MemGator's API.
Reading bodies
content() reads the selected memento URI directly, and falls back to MemGator's /memento/proxy/ endpoint when the archive does not answer. _meta.proxyFallback says which path served the body, and snapshot names the URL actually read.
Gotchas
- Memento is not in
providers.all(). MemGator already asks the Wayback Machine, Archive.today and others, so adding it toallwould double the requests to those archives. - A diff between two Memento captures requires the same
_meta.archivehost. The aggregator label alone is not enough provenance. - Aggregation takes seconds; MemGator waits for slow upstreams.
Where it lives
src/providers/memento.ts.