npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@dediapp/common-settings

v1.0.0

Published

ToM common settings

Readme

@dediapp/common-settings

The Common Settings module provides an integration layer between Dedi Common Settings and ToM.
It listens for user profile updates (e.g., display name, avatar) published to an AMQP queue and propagates these changes to Synapse using the Admin Settings API.

This ensures that updates to user information are automatically synchronized with the chat service.

Configuration

The connector requires a JSON configuration file. Default values can be found in src/config.json.

Required fields

{
  "rabbitmq": {
    "host": "localhost",
    "port": 5672,
    "vhost": "/",
    "username": "guest",
    "password": "guest",
    "tls": false
  },
  "features": {
    "common_settings": {
      "enabled": true,
      "queue": "settings.queue",
      "exchange": "exchange.exchange",
      "deadLetterExchange": "settings.dead.letter.exchange",
      "deadLetterRoutingKey": "settings.dead.letter.routing.key",
      "api_url": "http://host.docker.internal:4000",
      "api_secret": "secret"
    },
    "matrix_profile_updates_allowed": false
  }
}

Field descriptions

rabbitmq

  • host: The RabbitMQ server hostname or IP address.
  • port: The port on which RabbitMQ is listening (default: 5672).
  • vhost: The virtual host used for isolating environments in RabbitMQ (default: /).
  • username: Username for authenticating with RabbitMQ.
  • password: Password for authenticating with RabbitMQ.
  • tls: Whether to use TLS/SSL for the connection (true or false).

features.common_settings

  • enabled: Enables or disables the common settings feature.
  • queue: Name of the queue where incoming settings messages will be consumed.
  • exchange: Name of the exchange to which settings messages are published.
  • deadLetterExchange: Exchange where messages are routed if they cannot be processed.
  • deadLetterRoutingKey: Routing key for directing failed messages to the dead-letter exchange.
  • api_url: URL of the API used for handling user settings (the backend service for common settings).
  • api_secret: Secret key or token used to authenticate API requests.

features.matrix_profile_updates_allowed

  • matrix_profile_updates_allowed: Boolean flag indicating whether updates to Matrix user profiles (display name, avatar, etc.) are permitted on ToM.

The service can be instantiated and started programmatically:

import { CommonSettingsService } from '@dediapp/common-settings';
import { logger } from '@dediapp/logger';
import config from './config.json';

const service = new CommonSettingsService(config, logger, db); // db is tomserver db instance

await service.start();

To stop the service gracefully:

await service.stop();