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

decentraland / comms-gatekeeper
85%

Build:
DEFAULT BRANCH: main
Repo Added 17 Oct 2024 08:45PM UTC
Token H9CF0YzviAGXBYzx8ZZY8Lv8V4wtqKxTm regen
Build 760 Last
Files 148
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

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • 1.1.0
  • 1.1.1
  • 1.2.0
  • 1.2.1
  • 1.3.0
  • 2.0.0
  • 2.0.1
  • 2.1.0
  • 2.1.1
  • 2.10.0
  • 2.11.0
  • 2.12.0
  • 2.13.0
  • 2.13.1
  • 2.13.2
  • 2.14.0
  • 2.15.0
  • 2.16.0
  • 2.17.0
  • 2.17.1
  • 2.18.0
  • 2.19.0
  • 2.19.1
  • 2.19.2
  • 2.19.3
  • 2.2.0
  • 2.2.1
  • 2.20.0
  • 2.20.1
  • 2.21.0
  • 2.21.1
  • 2.22.0
  • 2.23.0
  • 2.24.0
  • 2.25.0
  • 2.26.0
  • 2.26.1
  • 2.3.0
  • 2.4.0
  • 2.6.0
  • 2.6.1
  • 2.7.0
  • 2.8.0
  • 2.9.0
  • add-ai-agent-context-to-readme
  • chore/WKC-presentation
  • chore/add-agents-file
  • chore/add-debugging-logs-for-room-started-handler
  • chore/bump-node
  • chore/update-dcl-schemas
  • chore/use-docs-generic-action
  • coverage
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.3
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.4
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.5
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.6
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.7
  • dependabot/npm_and_yarn/dcl/analytics-component-0.2.8
  • dependabot/npm_and_yarn/dcl/eslint-config-2.2.1
  • dependabot/npm_and_yarn/dcl/eslint-config-2.3.0
  • dependabot/npm_and_yarn/dcl/eslint-config-2.3.1
  • dependabot/npm_and_yarn/dcl/eslint-config-2.4.3
  • dependabot/npm_and_yarn/dcl/platform-crypto-middleware-1.1.0
  • dependabot/npm_and_yarn/dcl/platform-server-commons-1.0.1
  • dependabot/npm_and_yarn/dcl/schemas-16.11.0
  • dependabot/npm_and_yarn/dcl/schemas-16.12.0
  • dependabot/npm_and_yarn/dcl/schemas-16.13.0
  • dependabot/npm_and_yarn/dcl/schemas-16.14.0
  • dependabot/npm_and_yarn/dcl/schemas-16.6.4
  • dependabot/npm_and_yarn/dcl/schemas-16.9.0
  • dependabot/npm_and_yarn/dcl/schemas-17.0.0
  • dependabot/npm_and_yarn/dcl/schemas-17.1.0
  • dependabot/npm_and_yarn/dcl/schemas-17.2.0
  • dependabot/npm_and_yarn/dcl/schemas-18.0.0
  • dependabot/npm_and_yarn/dcl/schemas-18.3.0
  • dependabot/npm_and_yarn/dcl/schemas-18.8.0
  • dependabot/npm_and_yarn/dcl/schemas-19.0.0
  • dependabot/npm_and_yarn/dcl/schemas-19.3.0
  • dependabot/npm_and_yarn/dcl/schemas-19.4.0
  • dependabot/npm_and_yarn/dcl/schemas-19.4.1
  • dependabot/npm_and_yarn/dcl/schemas-19.6.0
  • dependabot/npm_and_yarn/dcl/schemas-19.8.0
  • dependabot/npm_and_yarn/dcl/schemas-20.2.0
  • dependabot/npm_and_yarn/dcl/schemas-20.3.0
  • dependabot/npm_and_yarn/dcl/schemas-22.0.0
  • dependabot/npm_and_yarn/dcl/sns-component-3.0.1
  • dependabot/npm_and_yarn/dcl/sns-component-3.0.2
  • dependabot/npm_and_yarn/well-known-components/fetch-component-3.0.0
  • dependabot/npm_and_yarn/well-known-components/interfaces-1.4.3
  • dependabot/npm_and_yarn/well-known-components/interfaces-1.5.1
  • dependabot/npm_and_yarn/well-known-components/interfaces-1.5.2
  • dependabot/npm_and_yarn/well-known-components/test-helpers-1.5.8
  • docs-update
  • docs/adapt-to-new-docs-workflow
  • docs/add-endpoint-docs
  • docs/ai
  • docs/ai-context
  • docs/banned-name-is-optional
  • docs/confusing-required-props-for-bans-and-admins
  • docs/fix-docs-workflow-usage
  • docs/fix-publish
  • docs/force-publish
  • docs/forcing-re-deploy
  • docs/improve-openapi-description
  • docs/rename-api-spec
  • docs/standarize-readme-schemas-and-agent-context
  • docs/test-api-reference-file
  • docs/update-list-bans-response
  • docs/use-docs-generic-action
  • docs/users-can-also-be-banned-by-name
  • feat/add-analytics
  • feat/add-generate-links
  • feat/add-logs
  • feat/add-names-to-get-admins
  • feat/add-owner-and-operators-in-list-admins
  • feat/add-private-voice-chat
  • feat/add-profile-to-metadata
  • feat/add-scene-room-creds-to-cast
  • feat/add-schema-validator-component
  • feat/add-support-for-multi-world-scenes
  • feat/add-support-for-world-rooms
  • feat/add-tracing
  • feat/add-try-catch
  • feat/add-world-bans-check
  • feat/all-active-voice-chats-endpoint
  • feat/allow-adding-scene-admins-by-name
  • feat/allow-banning-unbanning-by-name
  • feat/authorative-server
  • feat/ban-user-from-scene
  • feat/bans-check
  • feat/bot-presenter-handler
  • feat/cache-deny-list
  • feat/cache-response-of-fetch-entity-by-id
  • feat/cast-endpoints
  • feat/catch-ingress-not-found
  • feat/change-manual-deploy
  • feat/check-community-calls-ongoing
  • feat/communities-voice-actions
  • feat/communities-voice-chat-store-role
  • feat/community-voice-chat
  • feat/componenterize-blocklist
  • feat/end-community-call
  • feat/enhance-handler
  • feat/expire-rooms
  • feat/filter-local-preview-realm
  • feat/forward-livekit-messages-to-dwh
  • feat/generate-stream-link-get
  • feat/get-private-conversations-room-token
  • feat/get-scene-adapter-should-fail-for-banned-users
  • feat/get-social-privacy-settings-for-metadata
  • feat/get-stream-info-endpoint
  • feat/http-server-for-http2
  • feat/identity
  • feat/identity-handling
  • feat/kick-banned-users
  • feat/land-validation
  • feat/linker-server
  • feat/list-and-revoke-stream-access
  • feat/listen-livekit-webhook
  • feat/livekit-receive-webhook
  • feat/livekit-webhook-handler
  • feat/livekit-webhook-handler-2
  • feat/logs
  • feat/moderator-token-auth
  • feat/move-user-joined-event-to-event-joining-process
  • feat/mute-metadata
  • feat/notifications
  • feat/notify-moderation-events
  • feat/patch-social-privacy-settings
  • feat/places-checker
  • feat/platform-bans-check
  • feat/prevent-request-from-being-blocked
  • feat/publish-all-room-join-and-left-events
  • feat/publish-community-streaming-ended-event
  • feat/publish-user-left-room-event
  • feat/re-discovery-changes
  • feat/reject-request-to-speak
  • feat/remove-bans-from-disabled-places
  • feat/remove-old-key
  • feat/reset-logs
  • feat/reset-streaming-key
  • feat/return-world-other-permissions-addresses
  • feat/revoke-endpoint
  • feat/save-speaker-in-metadata
  • feat/scene-admins-for-multiplayer
  • feat/send-notifications-when-ban-unban-from-scene
  • feat/send-the-disconnection-reason-to-analytics
  • feat/setup-scene-admin-addapters-and-controllers
  • feat/sns-component
  • feat/sqs-message
  • feat/store-is-speaker-in-metadata-by-default
  • feat/stream-acces-migretion-adapter
  • feat/stream-link-gen
  • feat/streaming-image
  • feat/streaming-key-ttl-checker
  • feat/streaming-ttl-checker
  • feat/support-getting-community-voice-chat-status-in-bulk
  • feat/support-http2
  • feat/support-listing-bans-from-a-scene
  • feat/support-unban-user-from-scene
  • feat/update-explorer-url
  • feat/update-livekit-metadata-with-bans-info
  • feat/update-metadata-with-bans-after-room-creation
  • feat/use-admin-smart-item-world-scene-wise
  • feat/use-token-middleware
  • feat/user-moderation
  • feat/validate-world-stream-permissions
  • fix/active-community-calls-endpoint
  • fix/add-debugging-voice-chat-logs
  • fix/add-metadata-validator-to-bans
  • fix/add-missing-update-operators
  • fix/add-more-voice-logging
  • fix/allow-owners-to-access-their-worlds
  • fix/avoid-fetching-places-using-undefined-parcels
  • fix/banned-users-cannot-be-admins
  • fix/cache-effectiveness-across-adapters
  • fix/cache-instance-per-call
  • fix/cast-and-streaming-access-generations-for-multi-scene-worlds
  • fix/cast-expiration-time
  • fix/cast-room-id
  • fix/cast-stream-access-missing-ingress
  • fix/change-auth-token
  • fix/check-world-owner
  • fix/community-voice-chats-expiring-job
  • fix/correctly-check-for-body-user-metadata
  • fix/denylist
  • fix/ends-time
  • fix/env-var-auth-server
  • fix/expired-query
  • fix/failing-tests
  • fix/github-actions
  • fix/ingress-id-unique-error
  • fix/ingress-not-being-deleted
  • fix/ingress-options
  • fix/land-lease-multiple-authorizations-bug
  • fix/livekit-handler
  • fix/livekit-host
  • fix/livekit-host-procol
  • fix/lowercase-address
  • fix/metadata
  • fix/metadata-profile
  • fix/only-fire-end-event-on-closing-call
  • fix/parcels-endpoint-throwing
  • fix/participant-id
  • fix/place-search-response
  • fix/place-world-migration
  • fix/places-id-migration
  • fix/preview-room-name-uses-scene-id
  • fix/print-status-code-on-fetch-error
  • fix/privacy-settings-fetching
  • fix/remove-streaming-key
  • fix/remove-unused-handler
  • fix/resolve-world-scene-id-before-checking-ban
  • fix/respond-with-404-when-name-owner-not-found
  • fix/respond-with-livekit-connection-url
  • fix/restful-moderation
  • fix/return-created_at-as-number
  • fix/scene-admin-500-when-no-profiles-resolve
  • fix/streaming-key
  • fix/test
  • fix/test-voice-chat-room-hook
  • fix/tests
  • fix/update-readme
  • fix/use-correct-metadata-validator
  • fix/use-improved-lamb2-land-api
  • fix/use-webhook-event-room-when-room-started
  • fix/voice-chat-room-deletion
  • fix/world-streaming
  • fix/wss-adapter
  • gonpombo8-patch-1
  • main
  • pentreathm-patch-1
  • pentreathm-patch-2
  • refactor/add-scene-ban-input-camel-cased
  • refactor/change-terminlogy-blacklister-to-denylister
  • refactor/localpreview-fallback-cleanup
  • refactor/room-metadata-sync
  • refs/tags/1.0.0
  • refs/tags/1.0.1
  • revert-logging
  • test/duplicate-instance-for-testing-purposes
  • test/livekit
  • update/list-admins

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

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

Relevant lines Covered
Build:
Build:
3387 RELEVANT LINES 2994 COVERED LINES
75.1 HITS PER LINE
Source Files on main
  • Tree
  • List 148
  • Changed 96
  • Source Changed 12
  • Coverage Changed 96
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
25229256389 main 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 re... push 01 May 2026 07:23PM UTC web-flow github
85.26
25228902518 refactor/room-metadata-sync fix: release cooldown on webhook-refresh failure; align admin auth status addresses two reviewer comments: - updateRoomMetadataForRoom now removes the cooldown cache key from the catch block. previously a transient place-lookup blip would cons... Pull #261 01 May 2026 07:14PM UTC LautaroPetaccio github
85.26
25228208712 refactor/room-metadata-sync test: add lands mock helper and rewrite the lands spec to convention introduces test/mocks/lands-mock.ts (createLandsMockedComponent) so consumers don't need to inline the full ILandComponent shape. room-metadata-sync.spec.ts now uses it instead ... Pull #261 01 May 2026 06:56PM UTC LautaroPetaccio github
85.26
25227928729 refactor/room-metadata-sync test: fuse the lands and land-lease specs into one file both files were testing the lands component now that land-lease was folded in last commit, and both used the same createLandsComponent factory with overlapping mock setup. merging them remov... Pull #261 01 May 2026 06:48PM UTC LautaroPetaccio github
85.26
25227524513 refactor/room-metadata-sync refactor: fold land-lease into the lands wkc component land-lease was a tiny adapter that only the lands-related logic ever consumed: scene-manager (hasLandLease), the list-scene-admins handler (getAuthorizations), and roomMetadataSync (lease-hol... Pull #261 01 May 2026 06:38PM UTC LautaroPetaccio github
85.26
25226958604 refactor/room-metadata-sync test: cover undefined-authorizations defensive guard in getLeaseHoldersForParcels Pull #261 01 May 2026 06:24PM UTC LautaroPetaccio github
85.42
25226858307 refactor/room-metadata-sync refactor: lands adapter as a wkc component, owns lease-holders lookup splits src/adapters/lands.ts into the standard wkc layout under src/adapters/lands/ (component.ts, types.ts, errors.ts, index.ts) and moves LandPermissionsNotFoundError + the L... Pull #261 01 May 2026 06:21PM UTC LautaroPetaccio github
85.38
25225789460 refactor/room-metadata-sync refactor: tighten sceneId typing and guard scene-room parsing addresses two type-safety review comments: - GetRoomNameParams.sceneId is now `sceneId?: string`, matching the runtime: getRoomName already handles a missing sceneId (legacy world ... Pull #261 01 May 2026 05:53PM UTC LautaroPetaccio github
85.44
25224471412 refactor/room-metadata-sync refactor: use @dcl/memory-cache-component for the webhook refresh cooldown replaces the local Map<string, number> + manual prune helper inside roomMetadataSync with an injected ICacheStorageComponent. the cache entry's existence is the cooldown s... Pull #261 01 May 2026 05:18PM UTC LautaroPetaccio github
85.42
25223686457 refactor/room-metadata-sync 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. ... Pull #261 01 May 2026 04:57PM UTC LautaroPetaccio github
85.42
See All Builds (757)

Badge your Repo: comms-gatekeeper

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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