UNPKG

junction

Version:

Essential XMPP middleware for Node.js.

89 lines (76 loc) 1.96 kB
/** * Module dependencies. */ var fs = require('fs') , path = require('path') , xmpp = require('node-xmpp') , application = require('./application') , utils = require('./utils') , StanzaError = require('./stanzaerror'); // expose create() as the module exports = module.exports = create; /** * Framework version. */ require('pkginfo')(module, 'version'); /** * Create a Junction application. * * @return {Function} * @api public */ function create() { function app(stanza) { app.handle(stanza); } utils.merge(app, application); app._stack = []; app._filters = []; for (var i = 0; i < arguments.length; ++i) { app.use(arguments[i]); } return app; } /** * Expose `.create()` as module method. */ exports.create = create; /** * Expose constructors. */ exports.JID = xmpp.JID; exports.XMLElement = xmpp.Element; exports.XMPPStanza = xmpp.Stanza; /** * Expose element constructors. */ exports.elements = {}; exports.elements.Element = require('./elements/element'); exports.elements.IQ = require('./elements/iq'); exports.elements.Message = require('./elements/message'); exports.elements.Presence = require('./elements/presence'); /** * Expose constructors. */ exports.StanzaError = StanzaError; /** * Auto-load bundled filters. */ exports.filters = {}; fs.readdirSync(__dirname + '/filters').forEach(function(filename) { if (/\.js$/.test(filename)) { var name = path.basename(filename, '.js'); function load() { return require('./filters/' + name); } exports.filters.__defineGetter__(name, load); } }); /** * Auto-load bundled middleware. */ exports.middleware = {}; fs.readdirSync(__dirname + '/middleware').forEach(function(filename) { if (/\.js$/.test(filename)) { var name = path.basename(filename, '.js'); function load() { return require('./middleware/' + name); } exports.middleware.__defineGetter__(name, load); exports.__defineGetter__(name, load); } });