[{"data":1,"prerenderedAt":269},["ShallowReactive",2],{"navigation_docs":3,"-guide-explorer":72,"-guide-explorer-surround":264},[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},"PURLs","\u002Fguide\u002Fpurl","1.guide\u002F2.purl",{"title":16,"path":17,"stem":18},"Lookups","\u002Fguide\u002Flookups","1.guide\u002F3.lookups",{"title":20,"path":21,"stem":22},"Caching","\u002Fguide\u002Fcache","1.guide\u002F4.cache",{"title":24,"path":25,"stem":26},"CLI","\u002Fguide\u002Fcli","1.guide\u002F5.cli",{"title":28,"path":29,"stem":30},"Agents","\u002Fguide\u002Fagents","1.guide\u002F6.agents",{"title":32,"path":33,"stem":34},"Custom Registries","\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":71},"Registries","\u002Fregistries","2.registries\u002F0.index",[45,47,51,55,59,63,67],{"title":46,"path":42,"stem":43},"Overview",{"title":48,"path":49,"stem":50},"npm","\u002Fregistries\u002Fnpm","2.registries\u002F01.npm",{"title":52,"path":53,"stem":54},"crates.io","\u002Fregistries\u002Fcargo","2.registries\u002F02.cargo",{"title":56,"path":57,"stem":58},"PyPI","\u002Fregistries\u002Fpypi","2.registries\u002F03.pypi",{"title":60,"path":61,"stem":62},"RubyGems","\u002Fregistries\u002Frubygems","2.registries\u002F04.rubygems",{"title":64,"path":65,"stem":66},"Packagist","\u002Fregistries\u002Fpackagist","2.registries\u002F05.packagist",{"title":68,"path":69,"stem":70},"Arch Linux","\u002Fregistries\u002Falpm","2.registries\u002F06.alpm","i-lucide-library",{"id":73,"title":36,"body":74,"description":256,"extension":257,"links":258,"meta":259,"navigation":261,"path":37,"seo":262,"stem":38,"__hash__":263},"docs\u002F1.guide\u002F8.explorer.md",{"type":75,"value":76,"toc":250},"minimark",[77,115,197,204,209,212,226,230],[78,79,80,81,86,87,91,92,95,96,95,99,102,103,106,107,110,111,114],"p",{},"The ",[82,83,85],"a",{"href":84},"\u002Flookup","Lookup"," page calls the docs worker, and the worker calls the library: ",[88,89,90],"code",{},"createFromPURL"," for the adapter, then ",[88,93,94],{},"fetchPackage",", ",[88,97,98],{},"fetchVersions",[88,100,101],{},"fetchDependencies"," or ",[88,104,105],{},"fetchMaintainers",", exactly as a script would. Nothing on the page is a mock; a slow answer is the registry being slow, and a ",[88,108,109],{},"404"," is ",[88,112,113],{},"NotFoundError"," with its message.",[116,117,118,134],"table",{},[119,120,121],"thead",{},[122,123,124,128,131],"tr",{},[125,126,127],"th",{},"Operation",[125,129,130],{},"What it answers",[125,132,133],{},"CLI equivalent",[135,136,137,158,171,184],"tbody",{},[122,138,139,143,153],{},[140,141,142],"td",{},"Package",[140,144,145,146,148,149,152],{},"The normalized ",[88,147,142],{},", the display URLs and whatever ",[88,150,151],{},"metadata"," the registry adds",[140,154,155],{},[88,156,157],{},"registries info",[122,159,160,163,166],{},[140,161,162],{},"Versions",[140,164,165],{},"Up to fifty versions, newest first, with status and integrity",[140,167,168],{},[88,169,170],{},"registries versions --limit 50",[122,172,173,176,179],{},[140,174,175],{},"Dependencies",[140,177,178],{},"The dependencies of the given version, grouped by scope; latest resolved when the PURL has none",[140,180,181],{},[88,182,183],{},"registries deps",[122,185,186,189,192],{},[140,187,188],{},"Maintainers",[140,190,191],{},"Whoever the registry lists",[140,193,194],{},[88,195,196],{},"registries maintainers",[78,198,199,200,203],{},"Every query is a deep link: ",[88,201,202],{},"\u002Flookup?purl=pkg:cargo\u002Fserde&op=versions"," opens the page on that answer.",[205,206,208],"h2",{"id":207},"caching-and-manners","Caching and manners",[78,210,211],{},"Answers are cached on the worker, in KV in production, for the library's own TTLs: an hour for a package, thirty minutes for versions, a day for dependencies and maintainers. A failed answer is never cached, so a typo or an outage does not stick. One address can start thirty new registry queries a minute; answers served from the cache do not count.",[78,213,214,215,218,219,222,223,225],{},"The worker asks each registry with one retry and a twenty second timeout, and identifies itself as ",[88,216,217],{},"registries.agntn.dev (docs)",". A ",[88,220,221],{},"429"," from the registry is passed through as a ",[88,224,221],{}," from the worker rather than retried into a ban.",[205,227,229],{"id":228},"the-landing","The landing",[78,231,232,233,237,238,241,242,245,246,249],{},"The panels on the ",[82,234,236],{"href":235},"\u002F","home page"," start from answers recorded through the library and labelled ",[88,239,240],{},"sample",". As the page cycles through its six packages, each one is replaced by the worker's live answer and relabelled ",[88,243,244],{},"live",". The recorded answers live in ",[88,247,248],{},"docs\u002Fapp\u002Futils\u002Flanding-fixtures.ts"," and are regenerated with the library, never edited by hand.",{"title":251,"searchDepth":252,"depth":252,"links":253},"",2,[254,255],{"id":207,"depth":252,"text":208},{"id":228,"depth":252,"text":229},"The lookup page behind registries.agntn.dev that runs the library live, and what it does to be a good citizen.","md",null,{"icon":260},"i-lucide-search",true,{"title":36,"description":256},"xu-ar0fHcoQ34498Cuxn8QiSsAW-hnCHLpLG1KLPooo",[265,267],{"title":32,"path":33,"stem":34,"description":266,"children":-1},"Extend the base class, map the registry's API onto the shared types, register the ecosystem, and every helper picks it up.",{"title":46,"path":42,"stem":43,"description":268,"children":-1},"Six registries, one class shape. Pick one to see its endpoints, its name rules and the traps.",1788462725129]