Socket
Socket
Sign inDemoInstall

@metamask/safe-event-emitter

Package Overview
Dependencies
0
Maintainers
9
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@metamask/safe-event-emitter


Version published
Maintainers
9
Install size
7.88 kB
Created

Package description

What is @metamask/safe-event-emitter?

@metamask/safe-event-emitter is a lightweight event emitter library designed to be a safer alternative to the Node.js EventEmitter. It provides a simple API for emitting and listening to events, with additional safety checks to prevent common issues such as memory leaks and unhandled errors.

What are @metamask/safe-event-emitter's main functionalities?

Basic Event Emission

This feature allows you to emit and listen to events. The code sample demonstrates how to create an instance of SafeEventEmitter, set up an event listener, and emit an event.

const SafeEventEmitter = require('@metamask/safe-event-emitter');
const emitter = new SafeEventEmitter();
emitter.on('event', (message) => {
  console.log(message);
});
emitter.emit('event', 'Hello, world!');

Error Handling

This feature provides built-in error handling. The code sample shows how to listen for 'error' events and handle them appropriately.

const SafeEventEmitter = require('@metamask/safe-event-emitter');
const emitter = new SafeEventEmitter();
emitter.on('error', (err) => {
  console.error('An error occurred:', err);
});
emitter.emit('error', new Error('Something went wrong!'));

Removing Listeners

This feature allows you to remove event listeners. The code sample demonstrates how to add a listener, remove it, and then emit an event that will not be logged because the listener has been removed.

const SafeEventEmitter = require('@metamask/safe-event-emitter');
const emitter = new SafeEventEmitter();
function listener(message) {
  console.log(message);
}
emitter.on('event', listener);
emitter.removeListener('event', listener);
emitter.emit('event', 'This will not be logged.');

Other packages similar to @metamask/safe-event-emitter

Changelog

Source

[3.0.0] - 2023-04-24

Breaking

  • Drop support for Node.js < v12 (#101)

Changed

  • devDependencies and CI updates

Readme

Source

safe-event-emitter

An EventEmitter that isolates the emitter from errors in handlers. If an error is thrown in a handler it is caught and re-thrown inside of a setTimeout so as to not interrupt the emitter's code flow.

The API is the same as a core EventEmitter.

Install

$ yarn add '@metamask/safe-event-emitter'

Usage

import SafeEventEmitter from '@metamask/safe-event-emitter';

const ee = new SafeEventEmitter();
ee.on('boom', () => { throw new Error(); });
ee.emit('boom'); // No error here

// Error is thrown after setTimeout

Release & Publishing

The project follows the same release process as the other libraries in the MetaMask organization:

  1. Create a release branch
    • For a typical release, this would be based on master
    • To update an older maintained major version, base the release branch on the major version branch (e.g. 1.x)
  2. Update the changelog
  3. Update version in package.json file (e.g. yarn version --minor --no-git-tag-version)
  4. Create a pull request targeting the base branch (e.g. master or 1.x)
  5. Code review and QA
  6. Once approved, the PR is squashed & merged
  7. The commit on the base branch is tagged
  8. The tag can be published as needed

Running tests

yarn test

FAQs

Last updated on 24 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc