UNPKG

built.io

Version:

SDK for Built.io Backend

112 lines (103 loc) 3.65 kB
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; }*/