Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
wolfy87-eventemitter
Advanced tools
The wolfy87-eventemitter package is a lightweight and flexible event emitter library for JavaScript. It allows you to create and manage custom events, making it easier to implement the observer pattern in your applications.
Basic Event Emission
This feature allows you to create an event emitter instance, register an event listener, and emit an event. The listener will be triggered when the event is emitted.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.on('event', function() {
console.log('Event triggered!');
});
emitter.emit('event');
Event Emission with Arguments
This feature allows you to emit events with arguments. The registered listener can then access these arguments when the event is triggered.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.on('event', function(arg1, arg2) {
console.log('Event triggered with arguments:', arg1, arg2);
});
emitter.emit('event', 'arg1', 'arg2');
Removing Event Listeners
This feature allows you to remove specific event listeners. In this example, the listener is removed before the event is emitted, so the console log will not be triggered.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
function listener() {
console.log('Event triggered!');
}
emitter.on('event', listener);
emitter.off('event', listener);
emitter.emit('event');
Once Event Listeners
This feature allows you to register a listener that will only be triggered once. After the event is emitted the first time, the listener is automatically removed.
const EventEmitter = require('wolfy87-eventemitter');
const emitter = new EventEmitter();
emitter.once('event', function() {
console.log('Event triggered only once!');
});
emitter.emit('event');
emitter.emit('event');
The 'events' package is the built-in Node.js event emitter module. It provides similar functionality to wolfy87-eventemitter but is more tightly integrated with the Node.js runtime. It is a good choice if you are already using Node.js and want a standard solution.
The 'eventemitter3' package is another lightweight event emitter library for JavaScript. It is known for its performance and small footprint. Compared to wolfy87-eventemitter, it offers a similar API but is optimized for speed and efficiency.
The 'mitt' package is a tiny 200-byte functional event emitter. It is designed to be extremely lightweight and simple to use. While it offers fewer features than wolfy87-eventemitter, it is a great choice for projects where size and simplicity are critical.
As the subtitle suggests, this script brings the power of events from platforms such as node.js to your browser. Although it can be used on any other platform, I just built it with browsers in mind.
This is actually the fourth full rewrite of EventEmitter, my aim is for it to be faster and lighter than ever before. It also has a remapped API which just makes a lot more sense. Because the methods now have more descriptive names it is friendlier to extension into other classes. You will be able to distinguish event method from your own methods.
I have been working on it for over a year two three years so far and in that time my skills in JavaScript have come a long way. This script is a culmination of my learnings which you can hopefully find very useful.
There are no hard dependencies. The only reason you will want to run npm install
to grab the development dependencies is to build the documentation or minify the source code. No other scripts are required to actually use EventEmitter.
develop
branch!)If you wish to contribute to the project then please commit your changes into the develop
branch. All pull requests should contain a failing test which is then resolved by your additions. A perfect example was submitted by nathggns.
Tests are performed using Mocha and Chai, just serve up the directory using your local HTTP server of choice (http-server is probably a good choice) and open up tests/index.html
. You can also use the server scripts in the tools
directory.
You can run tools/doc.sh
to build from the JSDoc comments found within the source code. The built documentation will be placed in docs/api.md
. I actually keep this inside the repository so each version will have it's documentation stored with it.
You can grab minified versions of EventEmitter from inside this repository, every version is tagged. If you need to build a custom version then you can run tools/dist.sh
.
You can clone the repository with your generic clone commands as a standalone repository or submodule.
# Full repository
git clone git://github.com/Wolfy87/EventEmitter.git
# Or submodule
git submodule add git://github.com/Wolfy87/EventEmitter.git assets/js/EventEmitter
You can also get a copy of EventEmitter through the following package managers:
Copyright (c) 2011-2014 Oliver Caldwell
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FAQs
Event based JavaScript for the browser
The npm package wolfy87-eventemitter receives a total of 146,388 weekly downloads. As such, wolfy87-eventemitter popularity was classified as popular.
We found that wolfy87-eventemitter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.