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 🙏

© 2024 – Pkg Stats / Ryan Hefner

signally

v0.0.3

Published

Send messages to running Node processes

Downloads

138

Readme

Signally

Send messages to your Node process on the run with Signally! ⚡️

Published on npm

Why?

Node doesn't offer a nice and simple way to send events or messages to running Node processes out-of-the-box.

How?

  1. Install Signally
    npm install signally
  2. Add an event listener to your app
    import { addListener } from "signally";
    
    addListener("hello", message => {
      console.log("Received message:", message);
    });
  3. Run your app
  4. Send an event with Signally CLI command
    signally hello world
    # Node process output:
    Received message: world

Under the hood

Signally uses a simple file watching message queue to watch for new events. Each new event from Signally CLI will be added as a new file in buffer directory. Whenever a new file appears in the directory while an app with registered listeners is running, it will be read and parsed by the file watcher. All the listeners attached to the event are handled, and after this, the file is removed.

API

addListener

addListener(event: string, callback: (...messages: string[]) => void)

Adds a listener for given event name. When an event with given name is received, the callback is invoked with the messages as arguments.

Example:

// event with one message
addListener("some-event", message => {
  console.log("Received a message:", message);
});

// event with two messages
addListener("another-event", (first, second) => {
  console.log("Received two messages:", first, second);
});

// handle all sent messages
addListener("exhaustive-event", (...messages) => {
  console.log("Received messages:", messages);
});

send

send(event: string, ...messages: string[])

Send an event by adding a new file in the buffer directory.

Used by the CLI command, but can also be imported and invoked programmatically.

CLI

You can use the Signally CLI via:

  • npm scripts in package.json
  • npx signally [arguments]
  • installing globally with npm i -g signally (not recommended)

Signally CLI takes one or more arguments:

signally <event> [<message1> <message2> ...]
  • event (required)
    • type: string
    • describes the event name
  • messages
    • each of type string
    • the actual payload of the event

Tips & tricks

  • To avoid having to install Signally globally, prefer npx or npm scripts
  • Remember to wrap messages in quotation marks when needed (depending on your terminal)
  • To allow Signally to clean up properly, call process.exit() on signals like SIGINT (Ctrl + C)
    • Signally contains a handler for the exit event for clearing up and removing the .signally buffer directory