Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
nextgen-events
Advanced tools
The next generation of events handling for javascript! New: abstract away the network!
The next generation of events handling!
NextGen Events solves common trouble that one may encounter when dealing with events and listeners.
.emit()
supports a completion callback.once()
!.emit()
+ completion callbackEmitting events asynchronously or registering a listener that will be triggered asynchronously because it performs non-critical tasks has some virtues: it gives some breath to the event-loop, so important I/O can be processed as soon as possible.
You will love the state-event concept: you define a state bounded to the event of the same name, and when the bounded event fire, that state is turned on. If a new listener is added for that event and the bounded state is on, the new listener is triggered immediately with the same arguments that was previously emitted. You will typically make events like ready, open, end or close, etc, state-events, so late listeners will never miss your event again!
Contexts are really useful, it handles a collection of listeners. At first glance, it looks like a sort of namespace for listeners. But it can do more than that: you can turn a context off, so every listener tied to this context will not be triggered anymore. Then turn it on and they will be available again.
You can even switch a context into queue mode: the listeners tied to it will not be triggered, but events for those listeners will be stored in the context. When the context is resumed, all retained events will trigger their listeners. This allow one to postpone some operations, while performing some other high priority tasks, but be careful: depending on your application nature, the queue may grow fast and consumes a lot of memory very quickly.
One of the top feature of this lib is the context serialization: it greatly eases the flow of the code! When differents events can fire at the same time, there are use cases when one does not want that async listeners run concurrently. The context serialization feature will ensure you that no concurrency will happen for listeners tied to it. You do not have to code fancy or complicated tests to cover all cases anymore: just let NextGen Events do it for you!
Proxy services are awesome. They abstract away the network so we can emit and listen to emitter on the other side of the plug! Both side of the channel create a Proxy, and add to it local and remote services, i.e. event emitters, and that's all. A remote service looks like a normal (i.e. local) emitter, and share the same API (with few limitations). It's totally protocol agnostic, you just define two methods for your proxy: one to read from the network and one to send to it (e.g. for Web Socket, this is a one-liner).
Use npm:
npm install nextgen-events
By the way you can create an event emitter simply by creating a new object, this way:
var NgEmitter = require( 'nextgen-events' ) ;
var emitter = new NgEmitter() ;
You can use var emitter = Object.create( NgEmitter.prototype )
as well, the object does not need the constructor.
But in real life, you would make your own objects inherit it:
var NgEmitter = require( 'nextgen-events' ) ;
function myClass()
{
// myClass constructor code here
}
myClass.prototype = Object.create( NgEmitter.prototype ) ;
myClass.prototype.constructor = myClass ; // restore the constructor
// define other methods for myClass...
The basis of the event emitter works like Node.js built-in events:
var NgEmitter = require( 'nextgen-events' ) ;
var emitter = new NgEmitter() ;
// Normal listener
emitter.on( 'message' , function( message ) {
console.log( 'Message received: ' , message ) ;
} ) ;
// One time listener:
emitter.once( 'close' , function() {
console.log( 'Connection closed!' ) ;
} ) ;
// The error listener: if it is not defined, the error event will throw an exception
emitter.on( 'error' , function( error ) {
console.log( 'Shit happens: ' , error ) ;
} ) ;
emitter.emit( 'message' , 'Hello world!' ) ;
// ...
FAQs
The next generation of events handling for javascript! New: abstract away the network!
The npm package nextgen-events receives a total of 124,436 weekly downloads. As such, nextgen-events popularity was classified as popular.
We found that nextgen-events 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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.