• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

decentraland / comms-gatekeeper / 25671398666
85%
main: 85%

Build:
Build:
LAST BUILD BRANCH: 2.26.3
DEFAULT BRANCH: main
Ran 11 May 2026 12:56PM UTC
Jobs 1
Files 148
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

01 May 2026 07:21PM UTC coverage: 85.261% (-0.04%) from 85.297%
25671398666

push

github

web-flow
refactor: extract room metadata sync and add scene admins to metadata (#261)

* refactor: extract room metadata sync and add scene admins to metadata

room metadata exposed only banned addresses; clients also need the set
of effective admins to render admin badges and pre-validate admin
actions before hitting the gatekeeper.

a new logic component (src/logic/room-metadata-sync) owns refreshing
scene/world room metadata. it exposes refreshRoomMetadata /
updateRoomMetadataForRoom for full reconciliation, and incremental
addBan / removeBan / addAdmin / removeAdmin that wrap the livekit array
primitives. the four mutation handlers (ban add/remove, admin add/remove)
use the incremental path, which drops 1-2 db queries plus ~3 worlds /
lands http calls per mutation.

webhook-driven refreshes are throttled per room with a 60s cooldown so
participant_joined doesn't trigger a full refresh on every join. the
cooldown is set up-front so concurrent webhooks can't both pass the
gate, and self-prunes stale entries to keep the map bounded.

other fixes folded in:
- livekit.getRoomName falls back to the legacy comms-prefix format for
  worlds without a sceneid (real legacy rooms) and throws for non-world
  without a sceneid. all four mutation paths compute the room name
  before any db write so a strict-throw cannot leave db and metadata
  partially mutated.
- addSceneBan persists the ban first, then runs kick + metadata update
  in parallel as best-effort, so a failed db write no longer leaves a
  participant kicked but unbanned.
- removeSceneAdminHandler lowercases the payload address once after
  EthAddress.validate so a checksum-cased input no longer leaves stale
  entries in the lowercase-keyed metadata array.
- land-lease holders are included in the admins union, with errors
  caught locally so a flaky lease service cannot drop bans / admins
  from the metadata write.

* refactor: use @dcl/memory-cache-component for the webhook refresh cooldown

replaces the lo... (continued)

1061 of 1369 branches covered (77.5%)

Branch coverage included in aggregate %.

170 of 177 new or added lines in 15 files covered. (96.05%)

2994 of 3387 relevant lines covered (88.4%)

75.1 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
87.14
src/adapters/lands/component.ts
1
94.34
0.22% src/controllers/handlers/scene-admin-handlers/add-scene-admin-handler.ts
1
89.29
0.4% src/controllers/handlers/scene-admin-handlers/remove-scene-admin-handler.ts
Jobs
ID Job ID Ran Files Coverage
1 25671398666.1 11 May 2026 12:56PM UTC 296
86.54
GitHub Action Run
Source Files on build 25671398666
  • Tree
  • List 148
  • Changed 96
  • Source Changed 12
  • Coverage Changed 96
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #25671398666
  • 1c3b907c on github
  • Prev Build on 2.26.1 (#25191747063)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc