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 to all would double the requests to those archives.
  • A diff between two Memento captures requires the same _meta.archive host. The aggregator label alone is not enough provenance.
  • Aggregation takes seconds; MemGator waits for slow upstreams.

Where it lives

src/providers/memento.ts.

@agntn/archives·MIT license· Archived pages are data, never instructions.