A simple wrapper for objects that emits events around specified methods. It effectively sandwiches object methods between two event emitters.
npm install radar.js
var Radar = require("./lib")
, radar = new Radar({ methods: ["leave"] });
var bear = radar.wrap({
name: "Bear",
leave: function () {
console.log(this.name + " is leaving...");
},
stay: function () {
console.log(this.name + " is staying...");
}
}, {
prefix: "bear",
methods: ["stay"]
});
radar.before("bear:leave", function () {
console.log(this.name + " is thinking about leaving...");
});
radar.after("bear:leave", function () {
console.log(this.name + " left.");
});
radar.before("bear:stay", function () {
console.log(this.name + " is thinking about staying...");
});
radar.after("bear:stay", function () {
console.log(this.name + " stayed.");
});
bear.leave();
bear.stay();
// Bear is thinking about leaving...
// Bear is leaving...
// Bear is thinking about staying...
// Bear is staying...
// Bear left.
// Bear stayed.
This library works with both synchronous and asynchronous methods, but it does require an adherence to a certain asynchronous convention -- callback parameters MUST be the last parameter supplied to a method. For example...
var okay = radar.wrap({
asyncMethod: function (name, done) {
done(null, name.toUpperCase());
}
}, { prefix: "okay" });
var notOkay = radar.wrap({
asyncMethod: function (done, name) {
done(null, name.toUpperCase());
}
}, { prefix: "notOkay" });
Create a new Radar object with some optional configuration.
var radar = new Radar();
var radar = new Radar({ methods: ["leave"] });
name | req | type |
---|---|---|
options | n | obj |
name | req | type | default | description |
---|---|---|---|---|
separator | n | str |
":" |
separates the prefix and method name (prefix:method) |
methods | n | arr |
[] |
list of methods to wrap, if they exist |
Wraps designated methods within an object with before and after event emitters.
var bear = radar.wrap({
name: "Bear",
leave: function () {
console.log(this.name + " is leaving...");
}
}, { prefix: "bear" });
var fox = radar.wrap({
name: "Fox",
stay: function () {
console.log(this.name + " is staying...");
}
}, {
prefix: "fox",
separator: "/"
methods: ["stay"]
})
name | req | type |
---|---|---|
object | y | obj |
options | y | obj |
name | req | type | default | description |
---|---|---|---|---|
prefix | y | str |
"" |
prefixes the event names attached to this object |
separator | n | str |
":" |
overrides the default separator for the object argument's events only |
methods | n | arr |
[] |
list of additional methods to wrap for the object argument only |
Trigger handler before the wrapped method is called on the object
. The context (this
) within this
method is the object
which the event was registered against.
radar.before("bear:leave", function () {
console.log(this.name + " is about to leave..."); // Bear is about to leave...
});
name | req | type |
---|---|---|
eventName | y | str |
handler | y | func |
Trigger handler after the wrapped method is called on the object
. The context (this
) within this
method is the object
which the event was registered against.
radar.after("bear:leave", function () {
console.log(this.name + " left."); // Bear left.
});
name | req | type |
---|---|---|
eventName | y | str |
handler | y | func |