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

pulse-emit

v1.0.5

Published

Streamlined approach to emitting evwnts at regular intervals.

Downloads

48

Readme

🔥 PulseEmit: A simple way to schedule recurring events in Javascript.

The purpose of this library is to provide a simple way to schedule recurring events in Javascript using the EventEmitter pattern. It is desigend to provdie more information and structure than a simple setInterval, but less than a full blown cron job.

🚀 Getting Started

Get started by installing the package with npm.

npm install pulse-emit

Then import into your project the PulseEmitter object and any types (if using Typescript).

//Import the PusleEmitter Library
import { PulseEmitter, EventArray, EventDetails } from "pulse-emit";

⏲️ Creating Events

To create an event, create an event object consisting of an eventName and cadence. Store many events in an evets array. In the following example, there are two events, Fizz and Buzz. Fizz happens every 3 seconds and Buzz happens every 5 seconds.

//Define the Events
const events: EventArray = [
  {
    eventName: 'Fizz',
    cadence: 3_000,
  } as EventDetails,
  {
    eventName: 'Buzz',
    cadence: 5_000,
  } as EventDetails,
];

🎉 Starting the PulseEmitter

To start the PulseEmitter, create a new instance of the PulseEmitter object and pass in the events array. Then listen for events.

const pulseEmitter = new PulseEmitter(events);

//Listen for 'Fizz' Events
pulseEmitter.listen.on('Fizz', (data) => {
  // ... Do Something on A Fizz Event
});

//Listen for 'Buzz' Events
pulseEmitter.listen.on('Buzz', (data) => {
  // ... Do Something on A Buzz Event
});

📝 Event Data

When an event is emitted, the event data is passed to the event listener. The event data is an object with the following properties:

  • eventName: The name of the event.
  • time: The Unix timestamp the event took palce on.
  • event: An object with the following properties:
    • status: The status of the event ("active", "inactive" or "stopped").
    • firstExecuted: The Unix Time stamp since the first event of this type was executed.
    • lastExecuted: The Unix Time stamp since the last event of this type was executed.
    • occurrences: The number of times an event of this type has occurred.

✨ Add or Stop Events

You can manually add or stop events by calling the addEvent or stopEvent methods on the PulseEmitter object.

//Add a New Event
pulseEmitter.addEvent({
  eventName: 'NewEvent',
  cadence: 10_000,
} as EventDetails);

//Stop an Event
pulseEmitter.stopEvent('NewEvent');

🛑 Stopping the PulseEmitter

To stop the PulseEmitter, call the stopAllEvents method on the PulseEmitter object.

pulseEmitter.stopAllEvents();