OptionalgetA cached layer record by id.
OptionalcacheCaches a layer's payload under a profile — null when the layer belongs to none.
OptionalremoveRemoves a cached layer.
OptionalgetEvery cached layer of a profile.
OptionalgetWhat the stores hold, and the quota they are held against.
Relays the storage report of DB.Preferences.
⚠️ This relay declared LESS than what the module returns, and declared it
wrong. Its shape was { used, quota, percentage, layersCount, syncQueueCount }:
it named a counter of the v3 store — since removed — and omitted
featuresCount and outboxCount, which preferences.ts fills. A caller on
the degraded path thus received an object with two fields missing without the
type saying so.
Quota, usage, and the tallies of the four data-bearing stores.
OptionalstoreStores an image awaiting its upload.
OptionalgetOne stored image, by id.
Reads one stored image back — the preview path for a locally-held capture.
Local image id.
OptionalgetThe images whose upload is still owed.
OptionalupdateRecords the outcome of an upload — status is an object, never a string.
Marks a local image uploaded, and records the URL the server gave it.
🛑 THE status PARAMETER WAS TYPED string, AND THAT IS WHAT MADE THE BUG INVISIBLE.
The module behind this relay reads status.uploaded and status.url; the editor
plugin passed the STRING "uploaded". ("uploaded").uploaded is undefined, so the
record was rewritten as still pending and the URL was never stored — the same photo
left again on every reconnection and every boot, and cleanUploadedImages (a cursor
over the index at 1) found nothing to purge, forever. Three layers declared it loose:
this signature, the plugin's own local interface, and the index signature every module
was typed with ((...args: unknown[]) => unknown). That last one is gone: each relay is
now checked against the module it forwards to (DBModuleInstances).
Local image id.
{ uploaded, url? } — an OBJECT, never a string.
OptionalbindRecords which entity a stored image belongs to.
Binds a stored image to the feature that carries it — see the module's bindLocalImage.
Local image id.
Layer and client identity of the owning feature.
OptionalcleanReclaims the images the server has acknowledged.
OptionallistThe edits still owed or set aside, oldest first — state says which. An entry
set aside (state: "quarantined") also says why: quarantine is the motive,
quarantineStatus the HTTP status of the refusal when a server caused it. Only the
active profile's edits, unless allProfiles: true — then each says whose it is
(profileId, absent on an edit captured before core 3.18.0).
Optionaloptions: { allProfiles?: boolean }
GeoLeaf.Storage.DB— the IndexedDB engine, as far as the namespace names it.Hoisted so that
DBand its lower-case aliasdbare ONE declaration: derived from the façade's getter,dbwould not carrylistPendingEdits, and the two would disagree.