Used for identity and the HEAD identity probe.
The archive itself, injected (see ArchiveByteReader).
Private ReadonlyarchiveUsed for identity and the HEAD identity probe.
Private ReadonlyreaderThe archive itself, injected (see ArchiveByteReader).
The archive URL VERBATIM — never folded onto its unzipped twin.
scene.luxar.zarr.zip and scene.luxar.zarr/ cache the same decoded chunk
bytes but have different key namespaces (an archive has no
overlays/x/y.png, and a has miss means something different in each). A
shared OPFS bucket would let one serve the other's members with nothing
failing loudly.
Human-readable label for logs and the OPFS index metadata.
Fetch one key. Must not throw: failures come back as an outcome.
Optionalsignal: AbortSignalIdentity of the archive, delegated to the container.
A directory store re-reads its root zarr.json to answer "is this still
the scene I cached?". An archive cannot: its root attrs live inside the
file, and the reader's central directory is a snapshot — a replaced archive
would keep answering from the old offsets. One probe on the archive covers
the WHOLE store instead, which is both cheaper and a stronger guarantee
than a single document's hash.
The reader owns the request so its HEAD also seeds the archive length,
which the zip reader would otherwise fetch a second time. Requires the
headers to be readable cross-origin; luxar serve exposes them.
Release anything the source holds open. Called from the store's dispose.
Reads chunks out of a zipped zarr store.