Proxytron
proxytron
provides proxying between NodeJS EventEmitter
s. Zero dependencies, ES5+, browser support via browserify or EventEmitter shim.
Goals
- reliability - the library has 100% statement/branch coverage + type checking via flow
- API readability - proxying needs to be clear as it's potentially confusing
Example
// es6 example, proxytron works fine in es5 (or browser via browserify)const proxy = ;const EventEmitter = EventEmitter; const one = ;const two = ; // proxy API emphasises explicitness, so it's clear// where events are proxied from and where they're goingconst deproxy = proxyall from: one to: two; two; one; ; // this will not cause an event to be emitted from two as we've deproxiedone;
Installation
npm install --save proxytron
API
proxy({ from: EventEmitter, to: EventEmitter, events: { [sourceEvent: string]: targetEvent }}): deproxyFunction
Proxies all events in the events
object that are emitted on from
. They will be re-emitted with all
arguments on the emitter to
.
Provide null
or undefined
as the targetEvent
to reuse the original event name, or provide a string
to rename the event that will be emitted from to
.
Call the returned deproxyFunction
to stop proxying.
proxy.all({ from: EventEmitter, to: EventEmitter, rename: { [sourceEvent: string]: targetEvent }}): deproxyFunction
Proxies all events emitted by from
, meaning they will be re-emitted with all arguments on the emitter to
.
Provide a string as the targetEvent
in rename to rename event that will be emitted from to
.
Call the returned deproxyFunction
to stop proxying.
Contributing
Contributors welcome! Open up a PR and I'll make you a contributor.
Look at the package.json
for how to run tests/typechecks etc.