Skip to content

Streamlined approach to emitting evwnts at regular intervals.

Notifications You must be signed in to change notification settings

alistairheath/PulseEmit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔥 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();

About

Streamlined approach to emitting evwnts at regular intervals.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published