[{"data":1,"prerenderedAt":1690},["ShallowReactive",2],{"navigation_docs":3,"-guide-custom":88,"-guide-custom-surround":1685},[4,40],{"title":5,"path":6,"stem":7,"children":8,"icon":39},"Guide","\u002Fguide","1.guide\u002F1.index",[9,11,15,19,23,27,31,35],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Listing Captures","\u002Fguide\u002Fsnapshots","1.guide\u002F2.snapshots",{"title":16,"path":17,"stem":18},"Reading Captures","\u002Fguide\u002Fcontent","1.guide\u002F3.content",{"title":20,"path":21,"stem":22},"Comparing Versions","\u002Fguide\u002Fdiff","1.guide\u002F4.diff",{"title":24,"path":25,"stem":26},"Configuration","\u002Fguide\u002Fconfiguration","1.guide\u002F5.configuration",{"title":28,"path":29,"stem":30},"Agents","\u002Fguide\u002Fagents","1.guide\u002F6.agents",{"title":32,"path":33,"stem":34},"Custom Providers","\u002Fguide\u002Fcustom","1.guide\u002F7.custom",{"title":36,"path":37,"stem":38},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F8.explorer","i-lucide-book-open",{"title":41,"path":42,"stem":43,"children":44,"icon":87},"Providers","\u002Fproviders","2.providers\u002F0.index",[45,47,51,55,59,63,67,71,75,79,83],{"title":46,"path":42,"stem":43},"Overview",{"title":48,"path":49,"stem":50},"Wayback Machine","\u002Fproviders\u002Fwayback","2.providers\u002F01.wayback",{"title":52,"path":53,"stem":54},"Arquivo.pt","\u002Fproviders\u002Farquivo","2.providers\u002F02.arquivo",{"title":56,"path":57,"stem":58},"Webarchiv Österreich","\u002Fproviders\u002Fwebarchiv","2.providers\u002F03.webarchiv",{"title":60,"path":61,"stem":62},"Archive.today","\u002Fproviders\u002Farchive-today","2.providers\u002F04.archive-today",{"title":64,"path":65,"stem":66},"Common Crawl","\u002Fproviders\u002Fcommoncrawl","2.providers\u002F05.commoncrawl",{"title":68,"path":69,"stem":70},"WebCite","\u002Fproviders\u002Fwebcite","2.providers\u002F06.webcite",{"title":72,"path":73,"stem":74},"Memento","\u002Fproviders\u002Fmemento","2.providers\u002F07.memento",{"title":76,"path":77,"stem":78},"Archive-It","\u002Fproviders\u002Farchive-it","2.providers\u002F08.archive-it",{"title":80,"path":81,"stem":82},"Conifer","\u002Fproviders\u002Fconifer","2.providers\u002F09.conifer",{"title":84,"path":85,"stem":86},"Perma.cc","\u002Fproviders\u002Fpermacc","2.providers\u002F10.permacc","i-lucide-library",{"id":89,"title":32,"body":90,"description":1678,"extension":1679,"links":1680,"meta":1681,"navigation":379,"path":33,"seo":1683,"stem":34,"__hash__":1684},"docs\u002F1.guide\u002F7.custom.md",{"type":91,"value":92,"toc":1671},"minimark",[93,98,308,319,323,1076,1085,1088,1130,1134,1141,1480,1486,1490,1638,1645,1649,1667],[94,95,97],"h2",{"id":96},"the-contract","The contract",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-ts shiki shiki-themes vitesse-light vitesse-light vesper","interface ArchiveProvider {\n  name: string;\n  slug?: string;\n  readonly options?: ArchiveOptions;\n  cacheKey?: (options?: ArchiveOptions) => string | undefined;\n  snapshots: (domain: string, options?: ArchiveOptions) => Promise\u003CArchiveResponse>;\n  content?: (url: string, options?: ArchiveContentOptions) => Promise\u003CArchiveContentResponse>;\n}\n","ts","",[106,107,108,125,142,157,175,215,259,302],"code",{"__ignoreMap":104},[109,110,113,117,121],"span",{"class":111,"line":112},"line",1,[109,114,116],{"class":115},"s8Cdk","interface",[109,118,120],{"class":119},"s0_b1"," ArchiveProvider",[109,122,124],{"class":123},"sldxI"," {\n",[109,126,128,132,136,139],{"class":111,"line":127},2,[109,129,131],{"class":130},"sA8fy","  name",[109,133,135],{"class":134},"sUeik",":",[109,137,138],{"class":119}," string",[109,140,141],{"class":123},";\n",[109,143,145,148,151,153,155],{"class":111,"line":144},3,[109,146,147],{"class":130},"  slug",[109,149,150],{"class":115},"?",[109,152,135],{"class":134},[109,154,138],{"class":119},[109,156,141],{"class":123},[109,158,160,163,166,168,170,173],{"class":111,"line":159},4,[109,161,162],{"class":115},"  readonly",[109,164,165],{"class":130}," options",[109,167,150],{"class":115},[109,169,135],{"class":134},[109,171,172],{"class":119}," ArchiveOptions",[109,174,141],{"class":123},[109,176,178,182,184,186,189,192,194,196,198,201,204,206,209,213],{"class":111,"line":177},5,[109,179,181],{"class":180},"shFES","  cacheKey",[109,183,150],{"class":115},[109,185,135],{"class":134},[109,187,188],{"class":123}," (",[109,190,191],{"class":130},"options",[109,193,150],{"class":115},[109,195,135],{"class":134},[109,197,172],{"class":119},[109,199,200],{"class":123},") ",[109,202,203],{"class":134},"=>",[109,205,138],{"class":119},[109,207,208],{"class":134}," |",[109,210,212],{"class":211},"s7MK8"," undefined",[109,214,141],{"class":123},[109,216,218,221,223,225,228,230,232,235,237,239,241,243,245,247,250,253,256],{"class":111,"line":217},6,[109,219,220],{"class":180},"  snapshots",[109,222,135],{"class":134},[109,224,188],{"class":123},[109,226,227],{"class":130},"domain",[109,229,135],{"class":134},[109,231,138],{"class":119},[109,233,234],{"class":123},", ",[109,236,191],{"class":130},[109,238,150],{"class":115},[109,240,135],{"class":134},[109,242,172],{"class":119},[109,244,200],{"class":123},[109,246,203],{"class":134},[109,248,249],{"class":119}," Promise",[109,251,252],{"class":123},"\u003C",[109,254,255],{"class":119},"ArchiveResponse",[109,257,258],{"class":123},">;\n",[109,260,262,265,267,269,271,274,276,278,280,282,284,286,289,291,293,295,297,300],{"class":111,"line":261},7,[109,263,264],{"class":180},"  content",[109,266,150],{"class":115},[109,268,135],{"class":134},[109,270,188],{"class":123},[109,272,273],{"class":130},"url",[109,275,135],{"class":134},[109,277,138],{"class":119},[109,279,234],{"class":123},[109,281,191],{"class":130},[109,283,150],{"class":115},[109,285,135],{"class":134},[109,287,288],{"class":119}," ArchiveContentOptions",[109,290,200],{"class":123},[109,292,203],{"class":134},[109,294,249],{"class":119},[109,296,252],{"class":123},[109,298,299],{"class":119},"ArchiveContentResponse",[109,301,258],{"class":123},[109,303,305],{"class":111,"line":304},8,[109,306,307],{"class":123},"}\n",[309,310,311,314,315,318],"p",{},[106,312,313],{},"snapshots"," is the only required method. ",[106,316,317],{},"content"," is optional: a provider that serves captures only through its own UI leaves it out, and the aggregator reports the missing method the same way it reports an explicit unsupported response.",[94,320,322],{"id":321},"extend-the-base-class","Extend the base class",[99,324,327],{"className":101,"code":325,"filename":326,"language":103,"meta":104,"style":104},"import { BaseProvider, type ArchiveOptions, type ArchiveResponse } from \"@agntn\u002Farchives\";\n\ninterface MyArchiveOptions extends ArchiveOptions {\n  collection?: string;\n}\n\nexport class MyArchiveProvider extends BaseProvider\u003CMyArchiveOptions> {\n  readonly name = \"My Archive\";\n  readonly slug = \"my-archive\";\n\n  \u002F** Options that change the result set belong in the cache key. *\u002F\n  override cacheKey(options?: Readonly\u003CMyArchiveOptions>): string | undefined {\n    const collection = options?.collection ?? this.options.collection;\n    return collection ? `collection=${collection}` : undefined;\n  }\n\n  async snapshots(domain: string, requestOptions?: Readonly\u003CMyArchiveOptions>): Promise\u003CArchiveResponse> {\n    const options = await this.resolveOptions(requestOptions);\n    try {\n      const rows = await fetchMyIndex(domain, options); \u002F\u002F your HTTP call, honouring options.timeout and options.signal\n      return {\n        success: true,\n        pages: rows.map((row) => ({\n          url: row.original,\n          timestamp: new Date(row.captured).toISOString(),\n          snapshot: `https:\u002F\u002Fmy-archive.example\u002F${row.id}`,\n          _meta: { provider: \"my-archive\", status: row.status },\n        })),\n        _meta: { source: \"my-archive\", provider: \"my-archive\" },\n      };\n    } catch (error) {\n      return {\n        success: false,\n        pages: [],\n        error: error instanceof Error ? error.message : String(error),\n        _meta: { source: \"my-archive\", provider: \"my-archive\" },\n      };\n    }\n  }\n}\n","my-archive.ts",[106,328,329,375,381,396,409,413,417,442,461,480,485,492,530,567,605,611,616,662,689,697,727,735,752,781,798,830,859,895,901,934,940,959,966,978,986,1024,1055,1060,1066,1071],{"__ignoreMap":104},[109,330,331,335,338,341,344,347,349,351,353,356,359,362,366,370,373],{"class":111,"line":112},[109,332,334],{"class":333},"sB1ot","import",[109,336,337],{"class":123}," {",[109,339,340],{"class":130}," BaseProvider",[109,342,343],{"class":123},",",[109,345,346],{"class":333}," type",[109,348,172],{"class":130},[109,350,343],{"class":123},[109,352,346],{"class":333},[109,354,355],{"class":130}," ArchiveResponse",[109,357,358],{"class":123}," }",[109,360,361],{"class":333}," from",[109,363,365],{"class":364},"sbwUx"," \"",[109,367,369],{"class":368},"sHyde","@agntn\u002Farchives",[109,371,372],{"class":364},"\"",[109,374,141],{"class":123},[109,376,377],{"class":111,"line":127},[109,378,380],{"emptyLinePlaceholder":379},true,"\n",[109,382,383,385,388,391,394],{"class":111,"line":144},[109,384,116],{"class":115},[109,386,387],{"class":119}," MyArchiveOptions",[109,389,390],{"class":115}," extends",[109,392,172],{"class":393},"svZkz",[109,395,124],{"class":123},[109,397,398,401,403,405,407],{"class":111,"line":159},[109,399,400],{"class":130},"  collection",[109,402,150],{"class":115},[109,404,135],{"class":134},[109,406,138],{"class":119},[109,408,141],{"class":123},[109,410,411],{"class":111,"line":177},[109,412,307],{"class":123},[109,414,415],{"class":111,"line":217},[109,416,380],{"emptyLinePlaceholder":379},[109,418,419,422,425,428,430,432,434,437,440],{"class":111,"line":261},[109,420,421],{"class":333},"export",[109,423,424],{"class":115}," class",[109,426,427],{"class":119}," MyArchiveProvider",[109,429,390],{"class":115},[109,431,340],{"class":393},[109,433,252],{"class":123},[109,435,436],{"class":119},"MyArchiveOptions",[109,438,439],{"class":123},">",[109,441,124],{"class":123},[109,443,444,446,449,452,454,457,459],{"class":111,"line":304},[109,445,162],{"class":115},[109,447,448],{"class":130}," name",[109,450,451],{"class":134}," =",[109,453,365],{"class":364},[109,455,456],{"class":368},"My Archive",[109,458,372],{"class":364},[109,460,141],{"class":123},[109,462,464,466,469,471,473,476,478],{"class":111,"line":463},9,[109,465,162],{"class":115},[109,467,468],{"class":130}," slug",[109,470,451],{"class":134},[109,472,365],{"class":364},[109,474,475],{"class":368},"my-archive",[109,477,372],{"class":364},[109,479,141],{"class":123},[109,481,483],{"class":111,"line":482},10,[109,484,380],{"emptyLinePlaceholder":379},[109,486,488],{"class":111,"line":487},11,[109,489,491],{"class":490},"szOLe","  \u002F** Options that change the result set belong in the cache key. *\u002F\n",[109,493,495,498,501,504,506,508,510,513,515,517,520,522,524,526,528],{"class":111,"line":494},12,[109,496,497],{"class":115},"  override",[109,499,500],{"class":180}," cacheKey",[109,502,503],{"class":123},"(",[109,505,191],{"class":130},[109,507,150],{"class":115},[109,509,135],{"class":134},[109,511,512],{"class":119}," Readonly",[109,514,252],{"class":123},[109,516,436],{"class":119},[109,518,519],{"class":123},">)",[109,521,135],{"class":134},[109,523,138],{"class":119},[109,525,208],{"class":134},[109,527,212],{"class":211},[109,529,124],{"class":123},[109,531,533,536,539,541,543,546,549,552,556,559,561,563,565],{"class":111,"line":532},13,[109,534,535],{"class":115},"    const",[109,537,538],{"class":130}," collection",[109,540,451],{"class":134},[109,542,165],{"class":130},[109,544,545],{"class":123},"?.",[109,547,548],{"class":130},"collection",[109,550,551],{"class":115}," ??",[109,553,555],{"class":554},"sJr9o"," this",[109,557,558],{"class":123},".",[109,560,191],{"class":130},[109,562,558],{"class":123},[109,564,548],{"class":130},[109,566,141],{"class":123},[109,568,570,573,575,578,581,584,588,591,594,597,600,603],{"class":111,"line":569},14,[109,571,572],{"class":333},"    return",[109,574,538],{"class":130},[109,576,577],{"class":115}," ?",[109,579,580],{"class":364}," `",[109,582,583],{"class":368},"collection=",[109,585,587],{"class":586},"s8kWX","${",[109,589,548],{"class":590},"sbLrZ",[109,592,593],{"class":586},"}",[109,595,596],{"class":364},"`",[109,598,599],{"class":115}," :",[109,601,212],{"class":602},"s0j3p",[109,604,141],{"class":123},[109,606,608],{"class":111,"line":607},15,[109,609,610],{"class":123},"  }\n",[109,612,614],{"class":111,"line":613},16,[109,615,380],{"emptyLinePlaceholder":379},[109,617,619,622,625,627,629,631,633,635,638,640,642,644,646,648,650,652,654,656,658,660],{"class":111,"line":618},17,[109,620,621],{"class":115},"  async",[109,623,624],{"class":180}," snapshots",[109,626,503],{"class":123},[109,628,227],{"class":130},[109,630,135],{"class":134},[109,632,138],{"class":119},[109,634,343],{"class":123},[109,636,637],{"class":130}," requestOptions",[109,639,150],{"class":115},[109,641,135],{"class":134},[109,643,512],{"class":119},[109,645,252],{"class":123},[109,647,436],{"class":119},[109,649,519],{"class":123},[109,651,135],{"class":134},[109,653,249],{"class":119},[109,655,252],{"class":123},[109,657,255],{"class":119},[109,659,439],{"class":123},[109,661,124],{"class":123},[109,663,665,667,669,671,674,676,678,681,683,686],{"class":111,"line":664},18,[109,666,535],{"class":115},[109,668,165],{"class":130},[109,670,451],{"class":134},[109,672,673],{"class":333}," await",[109,675,555],{"class":554},[109,677,558],{"class":123},[109,679,680],{"class":180},"resolveOptions",[109,682,503],{"class":123},[109,684,685],{"class":130},"requestOptions",[109,687,688],{"class":123},");\n",[109,690,692,695],{"class":111,"line":691},19,[109,693,694],{"class":333},"    try",[109,696,124],{"class":123},[109,698,700,703,706,708,710,713,715,717,719,721,724],{"class":111,"line":699},20,[109,701,702],{"class":115},"      const",[109,704,705],{"class":130}," rows",[109,707,451],{"class":134},[109,709,673],{"class":333},[109,711,712],{"class":180}," fetchMyIndex",[109,714,503],{"class":123},[109,716,227],{"class":130},[109,718,343],{"class":123},[109,720,165],{"class":130},[109,722,723],{"class":123},");",[109,725,726],{"class":490}," \u002F\u002F your HTTP call, honouring options.timeout and options.signal\n",[109,728,730,733],{"class":111,"line":729},21,[109,731,732],{"class":333},"      return",[109,734,124],{"class":123},[109,736,738,742,745,749],{"class":111,"line":737},22,[109,739,741],{"class":740},"sYv7f","        success",[109,743,744],{"class":123},": ",[109,746,748],{"class":747},"sKIuG","true",[109,750,751],{"class":123},",\n",[109,753,755,758,760,763,765,768,771,774,776,778],{"class":111,"line":754},23,[109,756,757],{"class":740},"        pages",[109,759,744],{"class":123},[109,761,762],{"class":130},"rows",[109,764,558],{"class":123},[109,766,767],{"class":180},"map",[109,769,770],{"class":123},"((",[109,772,773],{"class":130},"row",[109,775,200],{"class":123},[109,777,203],{"class":134},[109,779,780],{"class":123}," ({\n",[109,782,784,787,789,791,793,796],{"class":111,"line":783},24,[109,785,786],{"class":740},"          url",[109,788,744],{"class":123},[109,790,773],{"class":130},[109,792,558],{"class":123},[109,794,795],{"class":130},"original",[109,797,751],{"class":123},[109,799,801,804,806,809,812,814,816,818,821,824,827],{"class":111,"line":800},25,[109,802,803],{"class":740},"          timestamp",[109,805,744],{"class":123},[109,807,808],{"class":115},"new",[109,810,811],{"class":180}," Date",[109,813,503],{"class":123},[109,815,773],{"class":130},[109,817,558],{"class":123},[109,819,820],{"class":130},"captured",[109,822,823],{"class":123},").",[109,825,826],{"class":180},"toISOString",[109,828,829],{"class":123},"(),\n",[109,831,833,836,838,840,843,845,847,850,853,855,857],{"class":111,"line":832},26,[109,834,835],{"class":740},"          snapshot",[109,837,744],{"class":123},[109,839,596],{"class":364},[109,841,842],{"class":368},"https:\u002F\u002Fmy-archive.example\u002F",[109,844,587],{"class":586},[109,846,773],{"class":590},[109,848,558],{"class":849},"s5fLt",[109,851,852],{"class":590},"id",[109,854,593],{"class":586},[109,856,596],{"class":364},[109,858,751],{"class":123},[109,860,862,865,868,871,873,875,877,879,881,884,886,888,890,892],{"class":111,"line":861},27,[109,863,864],{"class":740},"          _meta",[109,866,867],{"class":123},": { ",[109,869,870],{"class":740},"provider",[109,872,744],{"class":123},[109,874,372],{"class":364},[109,876,475],{"class":368},[109,878,372],{"class":364},[109,880,234],{"class":123},[109,882,883],{"class":740},"status",[109,885,744],{"class":123},[109,887,773],{"class":130},[109,889,558],{"class":123},[109,891,883],{"class":130},[109,893,894],{"class":123}," },\n",[109,896,898],{"class":111,"line":897},28,[109,899,900],{"class":123},"        })),\n",[109,902,904,907,909,912,914,916,918,920,922,924,926,928,930,932],{"class":111,"line":903},29,[109,905,906],{"class":740},"        _meta",[109,908,867],{"class":123},[109,910,911],{"class":740},"source",[109,913,744],{"class":123},[109,915,372],{"class":364},[109,917,475],{"class":368},[109,919,372],{"class":364},[109,921,234],{"class":123},[109,923,870],{"class":740},[109,925,744],{"class":123},[109,927,372],{"class":364},[109,929,475],{"class":368},[109,931,372],{"class":364},[109,933,894],{"class":123},[109,935,937],{"class":111,"line":936},30,[109,938,939],{"class":123},"      };\n",[109,941,943,946,949,951,954,957],{"class":111,"line":942},31,[109,944,945],{"class":123},"    }",[109,947,948],{"class":333}," catch",[109,950,188],{"class":123},[109,952,953],{"class":130},"error",[109,955,956],{"class":123},")",[109,958,124],{"class":123},[109,960,962,964],{"class":111,"line":961},32,[109,963,732],{"class":333},[109,965,124],{"class":123},[109,967,969,971,973,976],{"class":111,"line":968},33,[109,970,741],{"class":740},[109,972,744],{"class":123},[109,974,975],{"class":747},"false",[109,977,751],{"class":123},[109,979,981,983],{"class":111,"line":980},34,[109,982,757],{"class":740},[109,984,985],{"class":123},": [],\n",[109,987,989,992,994,996,999,1002,1004,1007,1009,1012,1014,1017,1019,1021],{"class":111,"line":988},35,[109,990,991],{"class":740},"        error",[109,993,744],{"class":123},[109,995,953],{"class":130},[109,997,998],{"class":115}," instanceof",[109,1000,1001],{"class":119}," Error",[109,1003,577],{"class":115},[109,1005,1006],{"class":130}," error",[109,1008,558],{"class":123},[109,1010,1011],{"class":130},"message",[109,1013,599],{"class":115},[109,1015,1016],{"class":180}," String",[109,1018,503],{"class":123},[109,1020,953],{"class":130},[109,1022,1023],{"class":123},"),\n",[109,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053],{"class":111,"line":1026},36,[109,1028,906],{"class":740},[109,1030,867],{"class":123},[109,1032,911],{"class":740},[109,1034,744],{"class":123},[109,1036,372],{"class":364},[109,1038,475],{"class":368},[109,1040,372],{"class":364},[109,1042,234],{"class":123},[109,1044,870],{"class":740},[109,1046,744],{"class":123},[109,1048,372],{"class":364},[109,1050,475],{"class":368},[109,1052,372],{"class":364},[109,1054,894],{"class":123},[109,1056,1058],{"class":111,"line":1057},37,[109,1059,939],{"class":123},[109,1061,1063],{"class":111,"line":1062},38,[109,1064,1065],{"class":123},"    }\n",[109,1067,1069],{"class":111,"line":1068},39,[109,1070,610],{"class":123},[109,1072,1074],{"class":111,"line":1073},40,[109,1075,307],{"class":123},[309,1077,1078,1080,1081,1084],{},[106,1079,680],{}," merges the factory options, the options of the call and the resolved config, in that order of precedence. ",[106,1082,1083],{},"this.options"," holds what the constructor received.",[309,1086,1087],{},"Three rules the built-in providers follow, and a review would ask of yours:",[1089,1090,1091,1103,1112],"ul",{},[1092,1093,1094,1098,1099,1102],"li",{},[1095,1096,1097],"strong",{},"Timestamps are ISO 8601."," Convert at the boundary; the merged listing sorts by ",[106,1100,1101],{},"timestamp"," and the window filter parses it.",[1092,1104,1105,1111],{},[1095,1106,1107,1110],{},[106,1108,1109],{},"_meta.provider"," on every page."," A merged listing has no other way to say where a page came from.",[1092,1113,1114,1117,1118,1121,1122,1125,1126,1129],{},[1095,1115,1116],{},"A missing capability is a response, not an exception."," Return ",[106,1119,1120],{},"{ success: false, unsupported: true, unsupportedReason }"," for a call your archive cannot make, so ",[106,1123,1124],{},"providers.all()"," can list it under ",[106,1127,1128],{},"unsupportedProviders"," instead of failing.",[94,1131,1133],{"id":1132},"serve-bodies","Serve bodies",[309,1135,1136,1137,1140],{},"Add ",[106,1138,1139],{},"content()"," when the archive can replay original responses:",[99,1142,1144],{"className":101,"code":1143,"language":103,"meta":104,"style":104},"async content(url: string, requestOptions?: Readonly\u003CArchiveContentOptions>): Promise\u003CArchiveContentResponse> {\n  const options = await this.resolveContentOptions(requestOptions);\n  const capture = await pickCapture(url, options.timestamp); \u002F\u002F newest at or before, else closest after\n  const body = await readBody(capture, options.maxBytes);\n  return {\n    success: true,\n    content: {\n      url: capture.original,\n      timestamp: capture.iso,\n      snapshot: capture.rawUrl,\n      content: body.text,\n      mime: body.mime,\n      bytes: body.bytes,\n      truncated: body.truncated,\n      _meta: { provider: \"my-archive\" },\n    },\n    _meta: { source: \"my-archive\", provider: \"my-archive\" },\n  };\n}\n",[106,1145,1146,1196,1220,1252,1281,1286,1297,1305,1320,1336,1352,1368,1384,1400,1416,1435,1440,1471,1476],{"__ignoreMap":104},[109,1147,1148,1151,1154,1156,1158,1161,1164,1166,1168,1171,1173,1175,1178,1180,1182,1184,1188,1190,1192,1194],{"class":111,"line":112},[109,1149,1150],{"class":130},"async",[109,1152,1153],{"class":180}," content",[109,1155,503],{"class":123},[109,1157,273],{"class":130},[109,1159,744],{"class":1160},"sp_wn",[109,1162,1163],{"class":130},"string",[109,1165,343],{"class":123},[109,1167,637],{"class":130},[109,1169,1170],{"class":115},"?:",[109,1172,512],{"class":130},[109,1174,252],{"class":134},[109,1176,1177],{"class":130},"ArchiveContentOptions",[109,1179,439],{"class":134},[109,1181,956],{"class":123},[109,1183,744],{"class":1160},[109,1185,1187],{"class":1186},"sPvX2","Promise",[109,1189,252],{"class":134},[109,1191,299],{"class":130},[109,1193,439],{"class":134},[109,1195,124],{"class":123},[109,1197,1198,1201,1203,1205,1207,1209,1211,1214,1216,1218],{"class":111,"line":127},[109,1199,1200],{"class":123},"  const ",[109,1202,191],{"class":130},[109,1204,451],{"class":134},[109,1206,673],{"class":333},[109,1208,555],{"class":554},[109,1210,558],{"class":123},[109,1212,1213],{"class":180},"resolveContentOptions",[109,1215,503],{"class":123},[109,1217,685],{"class":130},[109,1219,688],{"class":123},[109,1221,1222,1224,1227,1229,1231,1234,1236,1238,1240,1242,1244,1246,1249],{"class":111,"line":144},[109,1223,1200],{"class":123},[109,1225,1226],{"class":130},"capture",[109,1228,451],{"class":134},[109,1230,673],{"class":333},[109,1232,1233],{"class":180}," pickCapture",[109,1235,503],{"class":123},[109,1237,273],{"class":130},[109,1239,234],{"class":123},[109,1241,191],{"class":130},[109,1243,558],{"class":123},[109,1245,1101],{"class":130},[109,1247,1248],{"class":123},"); ",[109,1250,1251],{"class":490},"\u002F\u002F newest at or before, else closest after\n",[109,1253,1254,1256,1259,1261,1263,1266,1268,1270,1272,1274,1276,1279],{"class":111,"line":159},[109,1255,1200],{"class":123},[109,1257,1258],{"class":130},"body",[109,1260,451],{"class":134},[109,1262,673],{"class":333},[109,1264,1265],{"class":180}," readBody",[109,1267,503],{"class":123},[109,1269,1226],{"class":130},[109,1271,234],{"class":123},[109,1273,191],{"class":130},[109,1275,558],{"class":123},[109,1277,1278],{"class":130},"maxBytes",[109,1280,688],{"class":123},[109,1282,1283],{"class":111,"line":177},[109,1284,1285],{"class":123},"  return {\n",[109,1287,1288,1291,1293,1295],{"class":111,"line":217},[109,1289,1290],{"class":180},"    success",[109,1292,744],{"class":123},[109,1294,748],{"class":747},[109,1296,751],{"class":123},[109,1298,1299,1302],{"class":111,"line":261},[109,1300,1301],{"class":180},"    content",[109,1303,1304],{"class":123},": {\n",[109,1306,1307,1310,1312,1314,1316,1318],{"class":111,"line":304},[109,1308,1309],{"class":180},"      url",[109,1311,744],{"class":123},[109,1313,1226],{"class":130},[109,1315,558],{"class":123},[109,1317,795],{"class":130},[109,1319,751],{"class":123},[109,1321,1322,1325,1327,1329,1331,1334],{"class":111,"line":463},[109,1323,1324],{"class":180},"      timestamp",[109,1326,744],{"class":123},[109,1328,1226],{"class":130},[109,1330,558],{"class":123},[109,1332,1333],{"class":130},"iso",[109,1335,751],{"class":123},[109,1337,1338,1341,1343,1345,1347,1350],{"class":111,"line":482},[109,1339,1340],{"class":180},"      snapshot",[109,1342,744],{"class":123},[109,1344,1226],{"class":130},[109,1346,558],{"class":123},[109,1348,1349],{"class":130},"rawUrl",[109,1351,751],{"class":123},[109,1353,1354,1357,1359,1361,1363,1366],{"class":111,"line":487},[109,1355,1356],{"class":180},"      content",[109,1358,744],{"class":123},[109,1360,1258],{"class":130},[109,1362,558],{"class":123},[109,1364,1365],{"class":130},"text",[109,1367,751],{"class":123},[109,1369,1370,1373,1375,1377,1379,1382],{"class":111,"line":494},[109,1371,1372],{"class":180},"      mime",[109,1374,744],{"class":123},[109,1376,1258],{"class":130},[109,1378,558],{"class":123},[109,1380,1381],{"class":130},"mime",[109,1383,751],{"class":123},[109,1385,1386,1389,1391,1393,1395,1398],{"class":111,"line":532},[109,1387,1388],{"class":180},"      bytes",[109,1390,744],{"class":123},[109,1392,1258],{"class":130},[109,1394,558],{"class":123},[109,1396,1397],{"class":130},"bytes",[109,1399,751],{"class":123},[109,1401,1402,1405,1407,1409,1411,1414],{"class":111,"line":569},[109,1403,1404],{"class":180},"      truncated",[109,1406,744],{"class":123},[109,1408,1258],{"class":130},[109,1410,558],{"class":123},[109,1412,1413],{"class":130},"truncated",[109,1415,751],{"class":123},[109,1417,1418,1421,1423,1425,1427,1429,1431,1433],{"class":111,"line":607},[109,1419,1420],{"class":180},"      _meta",[109,1422,867],{"class":123},[109,1424,870],{"class":180},[109,1426,744],{"class":123},[109,1428,372],{"class":364},[109,1430,475],{"class":368},[109,1432,372],{"class":364},[109,1434,894],{"class":123},[109,1436,1437],{"class":111,"line":613},[109,1438,1439],{"class":123},"    },\n",[109,1441,1442,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469],{"class":111,"line":618},[109,1443,1444],{"class":180},"    _meta",[109,1446,867],{"class":123},[109,1448,911],{"class":180},[109,1450,744],{"class":123},[109,1452,372],{"class":364},[109,1454,475],{"class":368},[109,1456,372],{"class":364},[109,1458,234],{"class":123},[109,1460,870],{"class":180},[109,1462,744],{"class":123},[109,1464,372],{"class":364},[109,1466,475],{"class":368},[109,1468,372],{"class":364},[109,1470,894],{"class":123},[109,1472,1473],{"class":111,"line":664},[109,1474,1475],{"class":123},"  };\n",[109,1477,1478],{"class":111,"line":691},[109,1479,307],{"class":123},[309,1481,1482,1483,1485],{},"Read from an endpoint that returns the original response, never a page that wraps it. The diff helper compares whatever ",[106,1484,317],{}," says, and a replay banner would show up as a change.",[94,1487,1489],{"id":1488},"use-it","Use it",[99,1491,1493],{"className":101,"code":1492,"language":103,"meta":104,"style":104},"import { createArchive, providers } from \"@agntn\u002Farchives\";\nimport { MyArchiveProvider } from \".\u002Fmy-archive\";\n\nconst archive = createArchive(new MyArchiveProvider({ collection: \"news\" }));\nawait archive.use(providers.wayback());\n\nconst response = await archive.snapshots(\"example.com\");\n",[106,1494,1495,1521,1542,1546,1581,1606,1610],{"__ignoreMap":104},[109,1496,1497,1499,1501,1504,1506,1509,1511,1513,1515,1517,1519],{"class":111,"line":112},[109,1498,334],{"class":333},[109,1500,337],{"class":123},[109,1502,1503],{"class":130}," createArchive",[109,1505,343],{"class":123},[109,1507,1508],{"class":130}," providers",[109,1510,358],{"class":123},[109,1512,361],{"class":333},[109,1514,365],{"class":364},[109,1516,369],{"class":368},[109,1518,372],{"class":364},[109,1520,141],{"class":123},[109,1522,1523,1525,1527,1529,1531,1533,1535,1538,1540],{"class":111,"line":127},[109,1524,334],{"class":333},[109,1526,337],{"class":123},[109,1528,427],{"class":130},[109,1530,358],{"class":123},[109,1532,361],{"class":333},[109,1534,365],{"class":364},[109,1536,1537],{"class":368},".\u002Fmy-archive",[109,1539,372],{"class":364},[109,1541,141],{"class":123},[109,1543,1544],{"class":111,"line":144},[109,1545,380],{"emptyLinePlaceholder":379},[109,1547,1548,1551,1554,1556,1558,1560,1562,1564,1567,1569,1571,1573,1576,1578],{"class":111,"line":159},[109,1549,1550],{"class":115},"const",[109,1552,1553],{"class":130}," archive",[109,1555,451],{"class":134},[109,1557,1503],{"class":180},[109,1559,503],{"class":123},[109,1561,808],{"class":115},[109,1563,427],{"class":180},[109,1565,1566],{"class":123},"({ ",[109,1568,548],{"class":740},[109,1570,744],{"class":123},[109,1572,372],{"class":364},[109,1574,1575],{"class":368},"news",[109,1577,372],{"class":364},[109,1579,1580],{"class":123}," }));\n",[109,1582,1583,1586,1588,1590,1593,1595,1598,1600,1603],{"class":111,"line":177},[109,1584,1585],{"class":333},"await",[109,1587,1553],{"class":130},[109,1589,558],{"class":123},[109,1591,1592],{"class":180},"use",[109,1594,503],{"class":123},[109,1596,1597],{"class":130},"providers",[109,1599,558],{"class":123},[109,1601,1602],{"class":180},"wayback",[109,1604,1605],{"class":123},"());\n",[109,1607,1608],{"class":111,"line":217},[109,1609,380],{"emptyLinePlaceholder":379},[109,1611,1612,1614,1617,1619,1621,1623,1625,1627,1629,1631,1634,1636],{"class":111,"line":261},[109,1613,1550],{"class":115},[109,1615,1616],{"class":130}," response",[109,1618,451],{"class":134},[109,1620,673],{"class":333},[109,1622,1553],{"class":130},[109,1624,558],{"class":123},[109,1626,313],{"class":180},[109,1628,503],{"class":123},[109,1630,372],{"class":364},[109,1632,1633],{"class":368},"example.com",[109,1635,372],{"class":364},[109,1637,688],{"class":123},[309,1639,1640,1641,1644],{},"An instance and a lazy ",[106,1642,1643],{},"Promise\u003CArchiveProvider>"," are both accepted, so a custom provider sits next to the built-in ones without a wrapper.",[94,1646,1648],{"id":1647},"where-the-built-ins-live","Where the built-ins live",[309,1650,1651,1654,1655,1658,1659,1662,1663,1666],{},[106,1652,1653],{},"src\u002Fproviders\u002F"," holds one file per archive; ",[106,1656,1657],{},"wayback.ts"," is the template. The shared helpers in ",[106,1660,1661],{},"src\u002Futils\u002F"," map CDX rows, select captures, read playback and WARC bodies, and build the response objects, so a new built-in provider is mostly the index mapping. ",[106,1664,1665],{},"src\u002Fproviders\u002Findex.ts"," registers the lazy factory.",[1668,1669,1670],"style",{},"html pre.shiki code .s8Cdk, html code.shiki .s8Cdk{--shiki-light:#AB5959;--shiki-default:#AB5959;--shiki-dark:#A0A0A0}html pre.shiki code .s0_b1, html code.shiki .s0_b1{--shiki-light:#2E8F82;--shiki-default:#2E8F82;--shiki-dark:#FFC799}html pre.shiki code .sldxI, html code.shiki .sldxI{--shiki-light:#999999;--shiki-default:#999999;--shiki-dark:#FFF}html pre.shiki code .sA8fy, html code.shiki .sA8fy{--shiki-light:#B07D48;--shiki-default:#B07D48;--shiki-dark:#FFF}html pre.shiki code .sUeik, html code.shiki .sUeik{--shiki-light:#999999;--shiki-default:#999999;--shiki-dark:#A0A0A0}html pre.shiki code .shFES, html code.shiki .shFES{--shiki-light:#59873A;--shiki-default:#59873A;--shiki-dark:#FFC799}html pre.shiki code .s7MK8, html code.shiki .s7MK8{--shiki-light:#AB5959;--shiki-default:#AB5959;--shiki-dark:#FFC799}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sB1ot, html code.shiki .sB1ot{--shiki-light:#1E754F;--shiki-default:#1E754F;--shiki-dark:#A0A0A0}html pre.shiki code .sbwUx, html code.shiki .sbwUx{--shiki-light:#B5695977;--shiki-default:#B5695977;--shiki-dark:#99FFE4}html pre.shiki code .sHyde, html code.shiki .sHyde{--shiki-light:#B56959;--shiki-default:#B56959;--shiki-dark:#99FFE4}html pre.shiki code .svZkz, html code.shiki .svZkz{--shiki-light:#59873A;--shiki-default:#59873A;--shiki-dark:#FFF}html pre.shiki code .szOLe, html code.shiki .szOLe{--shiki-light:#A0ADA0;--shiki-default:#A0ADA0;--shiki-dark:#8B8B8B94}html pre.shiki code .sJr9o, html code.shiki .sJr9o{--shiki-light:#A65E2B;--shiki-default:#A65E2B;--shiki-dark:#A0A0A0}html pre.shiki code .s8kWX, html code.shiki .s8kWX{--shiki-light:#1E754F;--shiki-default:#1E754F;--shiki-dark:#99FFE4}html pre.shiki code .sbLrZ, html code.shiki .sbLrZ{--shiki-light:#B56959;--shiki-default:#B56959;--shiki-dark:#FFF}html pre.shiki code .s0j3p, html code.shiki .s0j3p{--shiki-light:#AB5959;--shiki-default:#AB5959;--shiki-dark:#FFF}html pre.shiki code .sYv7f, html code.shiki .sYv7f{--shiki-light:#998418;--shiki-default:#998418;--shiki-dark:#FFF}html pre.shiki code .sKIuG, html code.shiki .sKIuG{--shiki-light:#1E754F;--shiki-default:#1E754F;--shiki-dark:#FFC799}html pre.shiki code .s5fLt, html code.shiki .s5fLt{--shiki-light:#999999;--shiki-default:#999999;--shiki-dark:#99FFE4}html pre.shiki code .sp_wn, html code.shiki .sp_wn{--shiki-light:#393A34;--shiki-default:#393A34;--shiki-dark:#FFF}html pre.shiki code .sPvX2, html code.shiki .sPvX2{--shiki-light:#998418;--shiki-default:#998418;--shiki-dark:#FFC799}",{"title":104,"searchDepth":127,"depth":127,"links":1672},[1673,1674,1675,1676,1677],{"id":96,"depth":127,"text":97},{"id":321,"depth":127,"text":322},{"id":1132,"depth":127,"text":1133},{"id":1488,"depth":127,"text":1489},{"id":1647,"depth":127,"text":1648},"Extend the base class, answer the listing call, optionally serve bodies, and plug into the same archive.","md",null,{"icon":1682},"i-lucide-plus",{"title":32,"description":1678},"Uo4uQ-tXIC9Yq2A6Qm2vdLBRnZxaha1ljj5ewLDcWU4",[1686,1688],{"title":28,"path":29,"stem":30,"description":1687,"children":-1},"The MCP server, the Pi and OMP extensions, and the text contract that makes them answer identically.",{"title":36,"path":37,"stem":38,"description":1689,"children":-1},"The pages behind archives.agntn.dev that run the library live, and what each one is for.",1788446779052]