built.io-browserify
Version:
SDK for Built.io Backend which is compatible with Browserify
112 lines (103 loc) • 3.65 kB
JavaScript
var R = require('ramda');
var utility = require('./utilities/utility');
var instanceMethodBuilder = require('./utilities/instanceMethodBuilder')();
var eventMap = {};
/**
@namespace Events
@classdesc
Each application raises a set of default events on which listeners could be attached.
<p> </br> </p>
<p>
<b>Built.io Backend</b> The SDK triggers some global events for the developers. Here is the list of triggered events:
</p>
<ul>
<li><b>http:start</b> - any http request is initiated</li>
<li><b>http:end</b> - at the completion of http request</li>
<li><b>upload:start</b> - any upload is initiated</li>
<li><b>upload:end</b> - at the completion of upload</li>
<li><b>user:register</b> - at the completion of user registration</li>
<li><b>user:activate</b> - at the completion of user activation request</li>
<li><b>user:deactivate</b> - at the completion of user deactivation request</li>
<li><b>user:login</b> - at the completion of login request</li>
<li><b>user:logout</b> - at the completion of logout request</li>
<li><b>user:save-session</b> - at the time saveSession is invoked</li>
<li><b>user:clear-session</b> - at the time clearSession is invoked</li>
</ul>
@static
@example
var Events = Built.Events;
*/
eventMap['http:start'] = [];
eventMap['http:end'] = [];
eventMap['upload:start'] = [];
eventMap['upload:end'] = [];
eventMap['user:register'] = [];
eventMap['user:activate'] = [];
eventMap['user:deactivate'] = [];
eventMap['user:login'] = [];
eventMap['user:logout'] = [];
eventMap['user:save-session'] = [];
eventMap['user:clear-session'] = [];
eventMap['user:set-current-user'] = [];
module.exports.trigger = function(eventName,data){
eventMap[eventName].map(function(lst){
lst(data);
});
}
/**
* Attach a listener for an event
* @memberof Events
* @static
* @function on
* @param {String} eventName The event on which a listener should be attached
* @param {Function} listener The callback function to be invoked
* @example
* var Events = Built.Events;
* Evetns.on('user:login',function(data){
* // do something here
* });
*/
module.exports.on = function(eventName,listener){
var listenerArray = eventMap[eventName];
listenerArray.push(listener);
}
/**
* Removes a specific listener if the listener is provided. Else it removes all the listeners that were registered.
* @memberof Events
* @static
* @function off
* @param {String} eventName The event from which the listener is to be removed
* @param {Function} listener The listener function
* @example
* var listener1 = function(data){
* // do something here
* };
* var listener2 = function(data){
* // do something here
* };
* var Events = Built.Events;
* Events.on('user:login',listener1); //Registers a listener on user:login
* Events.on('user:login',listener2); //Registers another listener on user:login
*
* Evetns.off('user:login',listener1); //Unregisters a single listener
* Events.off('user:login'); //Unregisters all listeners that were registered
*/
module.exports.off = function(eventName,listener){
var listenerArray = eventMap[eventName];
if(arguments.length === 2){
var index = listenerArray.indexOf(listener);
if(index > -1)
listenerArray.splice(index, 1);
}
else{
listenerArray = [];
}
}
/*
module.exports.register = function(eventName,listener){
if(listener)
var tempArray = [listener];
else
tempArray = [];
eventMap[eventName] = tempArray;
}*/