Initial commit
[yaffs-website] / node_modules / tiny-lr / lib / index.js
1 var util   = require('util');
2 var Server = require('./server');
3 var Client = require('./client');
4 var debug  = require('debug')('tinylr');
5
6 // Need to keep track of LR servers when notifying
7 var servers = [];
8
9 module.exports = tinylr;
10
11 // Expose Server / Client objects
12 tinylr.Server = Server;
13 tinylr.Client = Client;
14
15 // and the middleware helpers
16 tinylr.middleware = middleware;
17 tinylr.changed = changed;
18
19 // Main entry point
20 function tinylr(opts) {
21   var srv = new Server(opts);
22   servers.push(srv);
23   return srv;
24 }
25
26 // A facade to Server#handle
27 function middleware(opts) {
28   var srv = new Server(opts);
29   servers.push(srv);
30   return function tinylr(req, res, next) {
31     srv.handler(req, res, next);
32   };
33 }
34
35 // Changed helper, helps with notifying the server of a file change
36 function changed(done) {
37   var files = [].slice.call(arguments);
38   if (files[files.length - 1] === 'function') done = files.pop();
39   done = typeof done === 'function' ? done : function() {};
40   debug('Notifying %d servers - Files: ', servers.length, files);
41   servers.forEach(function(srv) {
42     var params = { params: { files: files }};
43     srv && srv.changed(params);
44   });
45   done();
46 }