refactor(street-level): slim Mapillary tile proxy — memory cache only, no server holds

Drop the disk tile cache (.gev-cache/mapillary/tiles, background sweep,
size cap, legacy retrim), the server-side 401/403/429 holds, the upstream
concurrency semaphore and per-waiter abort bookkeeping. The client already
pauses on 429 and stops on a rejected key.

Keep: server-side token, {configured}-only status, strict coverage path
validation (z11-14), image-layer trimming, same-site gate and per-IP limit,
HTTPS redirect pinning to the tile origin, the streamed size cap, the error
mapping the client reads, a 24 h byte-budget LRU memory cache, in-flight
coalescing via the shared coalesceProxyRequest, and browser Cache-Control.

Routes and constants fold into mapillary.js and mapillary/tiles.js.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
German KhokhlovandClaude Opus 5.5 committed 2026-10-07 22:27:34 +04:00
1 parent 37a96072fa
commit b5a78826f8
10 files changed
+717 -1938

No files matched your search

+4 -3
View File
@@ -10,9 +10,10 @@
the terrain and on Google 3D tiles; MapillaryJS loads on the first photo,
and opening one frames it with one camera flight.
Share links carry the Mapillary switch, the filters and the panel's collapsed
state. A server proxy caches Mapillary coverage tiles (24 h, 1 GiB on disk),
refuses cross-site requests, rate-limits per IP and backs off when Mapillary
rejects the token or rate-limits.
state. A server proxy adds the token to Mapillary coverage tiles, drops
their unused image layer and keeps them in memory (24 h); it refuses
cross-site requests and rate-limits per IP, and the panel stops asking when
Mapillary rejects the token or rate-limits.
- Add Norway's road cameras from Statens vegvesen as a CCTV pack. The camera
list is one keyless GeoJSON request to the agency's OGC API view of its